こんにちは、現役SEのゆとです!
当ブログでは、以前オブジェクト指向に関するお話をさせていただきました。
その際にクラスの要素としてメソッドについて軽く触れました。
オブジェクト指向を学ぶにあたり、メソッドという概念はとても重要なものであると思います。
今回はそんなメソッドについて詳しく取り上げていきます。メソッドとはどのようなものなのか、どういう風に使われるのか、初心者の方にも分かりやすく解説します。ぜひ最後までご覧ください!
メソッドは多くのプログラミング言語が備えている機能となります。
ここでは説明のための言語としてJavaを用いています!
メソッドとは?
メソッドとは、複数の処理を一つにまとめ、それに名前をつけたものになります。このようにすることで、開発者が欲している特定の処理を部品(モジュール)として扱うことができます。
なぜ部品として扱いたいかというと、一度部品化してしまえばプログラム内で使い回しができるためです。それによって、同じ処理を複数回実行したい際に、同じコードを何度も書かずに済みます。これはこちらの記事で述べた「再利用性が高い」という特徴にも当てはまります。
またメソッドを使用することを「メソッドを呼び出す」といいます。
メソッドを呼び出す際は、以下の4つのことを確認する必要があります。
- クラス名(別クラスのメソッドを呼び出したい場合)
呼び出したいメソッドが別クラスのものである場合、まずそのクラスのインスタンスを作成する必要があります。
(こちらのパターンの解説は少し複雑になってしまいますので、今回は解説対象外とさせて頂きます) - メソッド名
メソッドを呼び出す場合、「メソッド名( )」と記述します。そのため呼び出したいメソッド名を確認する必要があります。 - 引数
引数とは、メソッド実行時にメソッドに渡すデータのことです。メソッドが処理を実行するために呼び出し元のデータが必要になる場合、引数としてそれを渡すことになります。
引数はメソッドに応じて、ある場合とない場合があります。 - 戻り値
戻り値とは、メソッドが返す処理結果のことです。メソッド内で特定の処理を実行した後、その実行結果を呼び出し元に返す場合があります。その実行結果を戻り値と呼びます。
戻り値はメソッドに応じて、ある場合とない場合があります。
メソッドの使い方
それではメソッドの使い方について解説していきます。
ここでは引数と戻り値のあり・なしでパターン化して解説します。
「引数:なし、戻り値:あり」のパターンのメソッドを使うタイミングはあまりないと思うので、今回は割愛させて頂きます。
「引数:なし、戻り値:あり」のパターンも使うよ!などありましたら是非教えてください!
引数:なし、戻り値:なし のメソッド
まず引数と戻り値、両方ともないパターンを考えます。
下記のプログラムをご覧ください。
public class Sample1 {
public static void main(String[] args){
// メソッドを呼び出す
comment();
}
// メソッドを定義
public static void comment() {
System.out.println("メソッドを呼び出したよ");
}
}
Sample1というクラスの中に、mainメソッドとcommentメソッドが定義されています。
Javaで作成したプログラムをコンパイルして実行した時、最初に呼び出されるメソッドがmainメソッドです。
このmainメソッドの内部では、
comment();
と記述がある通り、commentメソッドが呼び出されています。commentメソッドでは
System.out.println("メソッドを呼び出したよ");
という処理が実行されます。System.out.printlnメソッドは引数として渡した値を画面に表示するメソッドです。つまりcommentメソッドが呼び出されることで、「メソッドを呼び出したよ」という文字列が画面に表示されます。
このcommentメソッドは、呼び出されたら決まった文字列を画面に表示するだけなので、引数も戻り値もないメソッドとして定義されています。
引数:あり、戻り値:なし のメソッド
次に引数はあり、戻り値はないパターンを考えます。
下記のプログラムをご覧ください。
public class Sample2 {
public static void main(String[] args){
// メソッドを呼び出す
comment("テスト太郎");
}
// メソッドを定義
public static void comment(String name) {
System.out.println("はじめまして、" + name + "さん。");
}
}
Sample1クラスとの違いは、mainメソッド内でcommentメソッドを呼び出す際、( )の中に「テスト太郎」という文字列を記述していることです。この( )の中に記述した値が引数になります。commentメソッドはこの引数を受け取り、String型のnameという変数に代入して処理を実行します。つまりこの場合、
「はじめまして、テスト太郎さん。」という文字列が画面に表示されます。
ここで例えば、( )内の「テスト太郎」としているところを、「サンプル一郎」に変更した場合、プログラムの実行結果は「はじめまして、サンプル一郎さん。」と変わります。つまり引数を利用することで、同じメソッドでも処理結果を変えるなどすることができ、より汎用的に扱えるようになります。
引数:あり、戻り値:あり のメソッド
最後に引数、戻り値両方ありのパターンを考えます。
下記のプログラムをご覧ください。
public class Sample3 {
public static void main(String[] args){
int num1 = 2;
int num2 = 3;
// メソッドを呼び出す
int answer = add(num1, num2);
System.out.println(answer);
}
// メソッドを定義
public static int add(int x, int y) {
int answer = x + y;
return answer;
}
}
今回登場するメソッドは、2つの引数の足し算を行うaddメソッドです。このプログラムを実行すると、画面には「5」と表示されます。
(引数が複数ある場合は、”,”で区切って記述します)
addメソッドは、受け取った二つの引数で足し算を行い、その計算結果を呼び出し元に返すメソッドです。addメソッド内の
int answer = x + y;
で足し算を行い、
return answer;
で呼び出し元に計算結果を返しています。このanswerが戻り値となります。このように、メソッド内で戻り値を返す際は、return文を使って返します。
またメソッドの定義のやり方にも注意が必要です。先ほどのcommentメソッドの場合は
public static void comment(String name) {
という風に定義していました。しかしaddメソッドの場合、「void」の部分が「int」になっています。この部分はメソッドの戻り値の型を指定する部分であるため、今回の場合は戻り値answerの型であるintで指定する必要があるということです。
またreturn文は戻り値を返すだけでなく、メソッドの終了も行います。つまり、return文の後ろに処理を書いてもその処理は実行されないため、注意が必要です。
まとめ
今回はメソッドの概要と使い方について解説しました。
メソッドを使うことで処理を部品化すること出来るため、プログラムの再利用性が向上します。これによってプログラムをより綺麗に、より理解しやすく書くことができるので、非常に重要な概念といえます。
また今回は別クラスのメソッドを呼び出す方法には触れなかったため、今後はそのやり方に関する記事も発信したいと思います。
当ブログではこのようなITに関連する記事をいくつか発信しています。よろしければこちらもご覧ください。
最後まで読んでいただきありがとうございました。それではまた!
コメント