メソッドは、フィールドとともにクラスのメンバーと呼ばれます。メソッドとは、クラス内に記述される特定のブロックを指しています。
この記事では、Javaのメソッドに関する解説を行います。
この記事でわかること
- メソッドとは何か
- Javaのメソッド定義の基本
- Javaの特殊なメソッド「mainメソッド」とは何か
メソッドとは?
「メソッド(Method)」とは、プログラムにおいて特定の処理をひとまとまりにし名前をつけたものです。メソッド名を指定して呼びだすことで、同じ処理を何度も簡単に呼びだせます。
またメソッドは「引数」を与えることで、内部の処理を変更することもできます。メソッドは「関数」と呼ぶこともあります。メソッドは処理結果を返すものを定義できますし、結果を返さないものも定義できます。
メソッドをうまく定義し使用することは、中級者へのステップアップに繋がります。
かならず理解しましょう。
メソッド定義の基本
メソッドの定義は以下の形が基本となります。
メソッドの書式
[可視性][性的属性] 戻り値の型 メソッド名(引数…) {
処理;
:
return 戻り値;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
package org.pmisfbac.java.sample.ifandswitch; /** * @author Beエンジニア */ public class Main { private static void printHello() { System.out.println("Hello Java world!"); } public static String getAuthor() { return "Beエンジニア"; } public static int calcPower(int value) { return value * value; } /** * @param args コマンドライン引数 */ public static void main(String[] args) { printHello(); String author = getAuthor(); System.out.println(author); int ret = calcPower(32); System.out.println(ret); } } |
メソッドの可視性
メソッドには可視性という概念があります。
特に、Java言語は以下の可視性の指定が可能です。
メソッドの可視性
- public:公開
- protected:部分公開
- 未指定:より限定的な部分公開
- private:非公開
これらの可視性を指定する存在を「アクセス修飾子」といいます。この中でもよく使われるのは「public」と「private」です。初心者のうちは、この2つを意識することが重要です。
これらのアクセス修飾子は、「オブジェクト指向プログラミング」のカプセル化を実現する重要な役割をもっています。
アクセス修飾子 | クラス内 | パッケージ内 | サブクラス | すべて |
public | 〇 | 〇 | 〇 | 〇 |
protected | 〇 | 〇 | 〇 | |
修飾子なし | 〇 | 〇 | ||
private | 〇 |
パブリックメソッドとは?
「public」というアクセス修飾子が付けられたメソッドのことを「パブリックメソッド」(public method)といいます。日本語で「公開メソッド」ともいいます。
「パブリックメソッド」は、継承関係の有無に関わらず、全てのクラスから呼びだせるメソッドです。
プライベートメソッドとは?
「private」というアクセス修飾子が付けられたメソッドnことを「プライベートメソッド」(private method)といいます。日本語で「非公開メソッド」ともいいます。
「プライベートメソッド」は、自クラスからのみアクセスできるメソッドです。プライベートメソッドは、ほかのプログラムから呼びだされることが、原則的に不可能になります。
そのため、複雑なプログラムを書く上では、うまくプライベートメソッドとパブリックメソッドを使い分けることが重要です。
静的メソッドと非静的なメソッド
「静的メソッド」とは、「static修飾子」(static)を付けて定義したメソッドのことです。「クラスメソッド」(class method)ともいいます。
対して、「static」が付けられていないメソッドのことを「非静的メソッド」や「インスタンスメソッド」(instance method)といいます。ここでいうスタティックとは、「静的」という意味です。そのため静的メソッドと言うこともあります。
スタティックについての解説は、中級者以降で解説するため詳細は割愛します。とはいえ「静的メソッドから呼びだすメソッドは、同様に静的メソッドでなければならない」というルールがありますので、こちらは覚えておきましょう。
メソッドの引数と戻り値の型
メソッドは「引数」を与えてその内容を処理し、その結果を「戻り値」として返却できます。
引数は以下のように指定します。
戻り値の型 メソッド名(
引数1の型 引数1の名称,
引数2の型 引数2の名称,
…,
最後の引数の型 最後の引数の名称) {
:
}
なお、引数がない場合、メソッド定義における丸括弧の中身は空欄になります。
戻り値の型 メソッド名() {
関数の中身;
:
}
戻り値の型は、処理した結果を返す際に都合のよい型を1つ指定します。これにはプリミティブ型(基本データ型、int/doubleなど)やクラス(たとえばStringなど)を指定することもできます。
戻り値の型を指定した場合、関数の中に「return 戻り値;」という定義を含めます。この「return」は、指定された位置でメソッドの実行を終了し、値が指定されていた場合、それをメソッドの戻り値として採用します。
もしも戻り値が不要な場合、型として「void」を指定します。戻り値がないため、「return 戻り値;」という定義は不要です。ただし、メソッドの実行を終了させるために戻り値を指定せずに「return;」と書くことは可能です。
mainメソッドとは?
Javaにおいて、mainメソッドは最も重要な存在と言っても過言ではありません。なぜなら、Javaではかならず一つの「mainメソッドが必要である」と定められているからです。
Javaでは、コンパイルされたプログラムを実行する際に、まずmainメソッドを実行します。これを「エントリーポイントを実行する」といい、mainメソッドを「プログラムのエントリーポイント」といいます。
Javaでは、このエントリーポイントは、以下の定義であることが義務付けられます。
public static void main(String[] args) {
:
}
これによって、「main」というメソッドが定義されます。
これまでのメソッドの詳細を理解していれば、この定義の意味が理解できます。
- パブリックメソッドである
- スタティックメソッドである
- 戻り値がない
- 引数として「args」という文字列配列を受け取る
mainメソッドはパブリックメソッドなので、ほかのプログラムから呼びだせます。これは、私たち自体がプログラムを実行できるのも「mainメソッドが公開されているから」と言うわけです。
また、引数の「args」というのは、「コマンドライン引数」を処理するために存在しています。コマンドライン引数は、中級以降の内容で解説します。
まとめ
これまでJava入門ではさまざまなサンプルを扱ってきました。しかしこれまでは、あえて「mainメソッド」について解説をしませんでした。
今回の記事を理解した上で、過去の解説を読み直してみると、さらなる理解が可能になるでしょう。
ポイント
- 「メソッド」とは、プログラムにおいて特定の処理をひとまとまりにし名前をつけたもの
- その処理を名前を指定して呼びだすことで、同じような処理を簡単に呼びだせる
- メソッドにはアクセス修飾子やスタティック修飾子を付けられる
- メソッドには戻り値の型がある場合はその型を、ない場合は「void」と指定する
- メソッドには引数を半角カンマ(,)で区切って指定できる。ない場合は空欄にできる
Javaプログラムの基礎知識(全11記事)
├─Javaとは? Javaの基本概要をわかりやすく解説!
├─IDEとは?エクリプス環境を整えよう!
├─Javaの基本構造とコンパイルの流れを解説!
├─変数、リテラル、基本データ型について?
├─文字列の作成方法とStringのメソッドについて!
├─演算子について!
├─ifとswitchによる条件分岐を理解しよう!
├─ループ処理をおこなうfor文を理解しよう!
├─データをまとめて管理する配列とは?
├─メソッドとメソッドの定義について!
└─Javaに標準装備されている「ライブラリー」を活用しよう!