メソッド |
Java言語では,オブジェクト(インスタンス)の機能を実現するとき,メソッドをクラスに定義します。一口に「オブジェクトの機能」といっても,結局はJavaのコードの集まりにしか過ぎません。つまりメソッドとは,Javaのコードを意味のあるまとまり(機能や処理)として考えて,そのコードのまとまりに名前を付けたものです。
オブジェクト指向では,機能という概念でメソッドを考えることができますが,現実のプログラミングでは,そこまで深い意味を持たない場合も多く,単に複雑な処理を切り出してプログラムの可読性を高めたり,繰り返し実行される処理を1つにまとめるためにメソッドが定義されることもよくあります。それではもっとも簡単なメソッドの定義方法を説明します。
メソッドの定義
まず,与えられた2つの数字(変数xと変数yに格納された数字)を合計するaddメソッドの定義を見てみましょう。
int add(int x, int y){ |
上記のようなメソッド定義を構成するには,3つの要素が必要です。
(1)戻り値の型
(2)メソッド名
(3)引数「ひきすう」(パラメータ)
まずメソッドは,値を返さなくてはいけません。これは関数を知っていれば理解は早くなります。関数は与えられた引数を使い演算した結果を返します。ちょうど上記のaddメソッドを「足し算関数」だと思ってください。「足し算関数」に,3と4を与えると,「足し算関数」は7を返します。この関数の考え方を,addメソッドに当てはめると,addメソッドに3と7を与えると,addメソッドは7を返すことになります。
Java言語では,値には必ず型が必要です。addメソッドが返す値は,どのような値なのかを型で表現しなければいけません。そのため,このaddメソッドの戻り値の型はint型で定義されています。
int add(int x, int y){ ↑ここが戻り値の型になります。
メソッドは,必ず名前が必要です。上記のメソッドの名前は「add」ですが,このようなメソッド名は,変数の場合と同じように,半角のアルファベットや数字,記号を使って作ることができます。ただし,使えないキーワード(単語)や記号といった,変数と同じように制限もあります。
int add(int x, int y){ ↑ここがメソッド名
メソッドには,引数を渡すことができます。引数は,変数に代入されて渡されます。例えば3と4をaddメソッドに渡したい場合は,変数xに3を,変数yに4を代入します。この代入作業は,addメソッドを利用する側(これを呼び出し側といいます)から,以下のように記述することで,自動的に値を代入することができます。
add(3,4);
当然,この値にも型が存在します。そのためメソッドがどんな値を受け取ることができるのか,定義してやる必要があります。
int add(int x, int y){ ↑ ↑ここが受け取れる引数の型。
このように,定義したメソッドは,呼び出し側から呼び出された結果,処理を行います。どのような処理を行うのかは { から } の間に,Java言語のコードで記述していきます。
int add(int x, int y){ return x + y; // ここが処理(xとyの合計を返す)
}
上記の例では「return文」を使ってxとyの合計を呼び出した側に返しています。
次に,具体的な使用例を見てみましょう。
public class MyAdd { |
実行すると,画面に7と表示されます。
ここでは,addメソッドに3と4が与えられ呼び出されています。呼び出されたaddメソッドは,その合計を返します。返された数字は,変数aに代入されます。結果,画面には7が表示されるのです。
まず,メソッドは必ずクラスの中で定義されます。そして,戻り値をメソッドから受け取る場合は,同じ型でなければいけません。
実は,今までプログラムが始まるスタートポイントであるmainの部分も,メソッドです。また,今まで文字を表示させるのに使用してきたSystem.out.println()も,outクラスで定義されているメソッドを呼び出していたのです。
しかし,mainメソッドの戻り値の部分には,見たこともないキーワードが多数使用されています。publicとはなんでしょう?staticとは何でしょう?voidとはなんでしょう?それに,mainメソッドの引数には,String[]といった,型が使われています。なぜ,intやlongではないのでしょう?
まだまだわからないことが多いと思いますが,voidだけは次に説明します。そのほかのキーワードについてはまだ無視をしていてください。
戻り値や引数のないメソッド
メソッドには,戻り値や引数のないものも定義できます。ただしメソッドに戻り値がない場合は,きちんと宣言してやる必要があります。この時使用されるのが,voidというキーワードです。 引数がない場合は,何も記述する必要はありません。以下に戻り値も引数もないメソッドの例を紹介します。
public class MyHello
{ |
このように,戻り値がない場合は,戻り値の型にvoidを指定します。また,処理の中でreturn文で値を返してはいけません。プログラムのスタート・ポイントであるmainメソッドも,値を返しません。そのためvoidで宣言されています。