本記事は、Javaを一から学んでいく際の学習メモとして書かれています。
主にインプレスから出版されている「スッキリわかるJava入門 第2版 (スッキリシリーズ)」の内容に沿ったかたちで学習していきます。
今回は、Javaのメソッドについて学んでいきます。
メソッド
プログラムでは同じ処理をさせたい場面が多々あり、これをその都度記述していくのはとても非効率かつソースコードの可読性(readability)も悪化します。
そのため、処理をさせる部分を一つの部品のようにしてまとめておき、利用する度にメソッドとして呼び出すことで効率化することができ、ソースコードとしての可読性も向上します。
このようにプログラムを一つの部品のようにしてまとめたものをメソッド(method)と呼びます。
例えば、以下のような絶対値を求めるabs()
メソッドを定義しておけば、メインメソッドから簡単に呼び出すことができます。
public class Abs { public static int abs(int n) { return n > 0 ? n : -n; } public static void main(String[] args) { int n = -1; System.out.println(abs(n)); }
上記では戻り値がint
型を指定しているので、必ずreturn
文を記述しなければなりません。
また、戻り値が必要ない場合はvoid
を指定します。
なお、メソッドの戻り値は一つのみ可能であり、複数の戻り値が必要な場合は、引数として配列などの参照を渡し、メソッド内で値を書き込むか、メソッド内で配列などを作成し、戻り値として配列などの参照型を返す必要があります。
さらに、abs()
内にあるものは引数(argument)と呼びます。
この引数は複数指定でき、その場合はabs(int a, int b)
のようにカンマ区切りで指定します(もちろん引数がないメソッドも可能です)が、。メソッドを呼び出す際も必ず指定した数だけ引数を渡してあげる必要があります。
また、同じ引数でも呼び出し元と呼び出し先で呼称が異なり、前者を実引数、後者を仮引数と呼びます。
なお、メソッド名はアルファベット小文字で始めます。
これはクラス名を大文字アルファベットで始めるのと区別することで、それがクラス名なのか、メソッド名なのかを瞬時に判別することができます。
オーバーロード
既にあるメソッドに対して、同じ名前のメソッドを作成することができませんが、引数の個数、型、並び順が異なれば、同じメソッド名でも作成することができます。
これをオーバーロード(overload: 多重定義)といいます。
なお、戻り値の型の後に続く情報をシグネチャ(signature)といいます。
public class Hello{ public static void hello(){ System.out.println("Hello."); } public static void hello(String name){ System.out.println("Hello, " + name + "."); } public static void main(String[] args) { hello(); hello("Java"); } }
同じhello()
メソッドでも引数の数が違えば異なる処理をさせることが可能になります。
最後に
今回はJavaのメソッドについて、基本的なルールを学びました。
次回は値渡しと参照渡しについて学んでいきます。
参考書籍