【Java入門シリーズ】第5章: メソッド 〜再利用可能なコードの書き方〜

【Java入門シリーズ】第5章 メソッド 〜再利用可能なコードの書き方〜 JAVA
PR

プログラムを書く上で、同じ処理を何度も繰り返し書くのは効率的ではありません。Javaでは、メソッドを使用して、処理を一箇所にまとめ、必要に応じて何度も呼び出すことができます。メソッドはプログラムを整理し、再利用性を高め、可読性を向上させます。この章では、メソッドの基本から、引数や戻り値、メソッドのオーバーロード、静的メソッドについて詳しく学びます。


5.1 メソッドとは?

メソッドは、特定の処理を一つのまとまりとして定義したものです。メソッドを使うことで、同じコードを繰り返し書く必要がなくなり、プログラムを効率的に記述できます。メソッドは、引数を受け取り、必要に応じて戻り値を返すことができます。

5.1.1 メソッドの基本構造

Javaでメソッドを定義する基本構造は次の通りです。

アクセス修飾子 戻り値の型 メソッド名(引数リスト) {
// メソッドの処理
return 戻り値; // 戻り値がある場合
}
  • アクセス修飾子: publicprivateなど、メソッドがどこからアクセスできるかを指定します。
  • 戻り値の型: メソッドが返す値の型です。戻り値がない場合はvoidを指定します。
  • メソッド名: メソッドを呼び出すための名前です。
  • 引数リスト: メソッドに渡すデータ(パラメータ)を定義します。

5.1.2 メソッドの例

次のコードは、addNumbersという名前のメソッドを定義し、2つの整数を引数として受け取り、それらの和を返すメソッドの例です。

public int addNumbers(int num1, int num2) {
int sum = num1 + num2;
return sum;
}

このメソッドは、num1num2の合計を計算し、その結果を戻り値として返します。


5.2 メソッドの呼び出し

メソッドを定義したら、そのメソッドをプログラムの中で呼び出すことができます。メソッドを呼び出すときは、メソッド名と必要な引数を指定します。

5.2.1 メソッド呼び出しの基本

次に、addNumbersメソッドを呼び出して結果を表示する例を示します。

public class Main {
public static void main(String[] args) {
Main main = new Main();
int result = main.addNumbers(5, 10);
System.out.println("合計は: " + result);
}

public int addNumbers(int num1, int num2) {
int sum = num1 + num2;
return sum;
}
}
  • メソッドの呼び出し: main.addNumbers(5, 10)でメソッドを呼び出し、510を引数として渡します。
  • 戻り値の処理: 戻り値は変数resultに代入され、結果が出力されます。

5.2.2 戻り値がないメソッド(voidメソッド)

戻り値がないメソッドでは、void型を指定します。次の例は、挨拶を表示するだけのメソッドです。

public void sayHello() {
System.out.println("こんにちは!");
}

このメソッドは何も返さず、呼び出すだけでメッセージを表示します。

public class Main {
public static void main(String[] args) {
Main main = new Main();
main.sayHello();
}

public void sayHello() {
System.out.println("こんにちは!");
}
}

5.3 引数とパラメータ

メソッドにデータを渡すために、引数を使います。引数は、メソッドが必要とするデータを外部から受け取るための仕組みです。引数は、メソッド定義の中でパラメータとして宣言されます。

5.3.1 引数の使い方

以下の例では、2つの引数num1num2を受け取り、その合計を表示します。

public void printSum(int num1, int num2) {
int sum = num1 + num2;
System.out.println("合計は: " + sum);
}

このメソッドを呼び出すときに、2つの整数を渡します。

public class Main {
public static void main(String[] args) {
Main main = new Main();
main.printSum(5, 15);
}

public void printSum(int num1, int num2) {
int sum = num1 + num2;
System.out.println("合計は: " + sum);
}
}

5.3.2 複数の引数を持つメソッド

メソッドは、複数の引数を受け取ることができます。例えば、3つの整数を受け取り、それらの最大値を返すメソッドを考えてみましょう。

public int max(int a, int b, int c) {
int max = a;
if (b > max) {
max = b;
}
if (c > max) {
max = c;
}
return max;
}

このメソッドは、3つの引数を受け取り、その中で最大の値を返します。


5.4 メソッドの戻り値

メソッドは処理結果を返すことができます。これを戻り値と呼びます。戻り値の型は、メソッド定義で指定する必要があります。voidメソッドは戻り値を持たないため、この場合は戻り値の型としてvoidを指定します。

5.4.1 戻り値の型を指定する

例えば、整数を返すメソッドでは、int型を指定します。

public int square(int num) {
return num * num;
}

5.4.2 戻り値が複雑な場合

戻り値が複数のデータを含む場合、オブジェクトや配列として返すことができます。例えば、2つの整数の合計と積を同時に返す方法を見てみましょう。

public int[] sumAndProduct(int a, int b) {
int[] result = new int[2];
result[0] = a + b;
result[1] = a * b;
return result;
}

戻り値として配列を返し、呼び出し側でそれを処理します。

public class Main {
public static void main(String[] args) {
Main main = new Main();
int[] result = main.sumAndProduct(5, 10);
System.out.println("合計: " + result[0]);
System.out.println("積: " + result[1]);
}

public int[] sumAndProduct(int a, int b) {
int[] result = new int[2];
result[0] = a + b;
result[1] = a * b;
return result;
}
}

5.5 メソッドのオーバーロード

Javaでは、メソッドのオーバーロードを利用して、同じ名前のメソッドを複数定義することができます。ただし、メソッドの引数の数や型が異なる必要があります。これにより、異なる引数を受け取るメソッドを統一して定義できます。

5.5.1 オーバーロードの基本

例えば、次の例では、addNumbersメソッドが異なる型の引数を受け取るバージョンをオーバーロードしています。

public int addNumbers(int a, int b) {
return a + b;
}

public double addNumbers(double a, double b) {
return a + b;
}

この場合、int型の引数が渡された場合は1つ目のメソッドが、double型の引数が渡された場合は2つ目のメソッドが呼び出されます。

5.5.2 オーバーロードの例

次に、引数の数が異なる場合のメソッドオーバーロードを示します。

public int addNumbers(int a, int b) {
return a + b;
}

public int addNumbers(int a, int b, int c) {
return a + b + c;
}
  • 2つの整数を受け取るバージョンと、3つの整数を受け取るバージョンが定義されています。
  • 呼び出す際に、渡す引数の数に応じて適切なメソッドが自動的に選択されます。
public class Main {
public static void main(String[] args) {
Main main = new Main();
System.out.println(main.addNumbers(5, 10)); // 2つの引数を使用
System.out.println(main.addNumbers(5, 10, 15)); // 3つの引数を使用
}

public int addNumbers(int a, int b) {
return a + b;
}

public int addNumbers(int a, int b, int c) {
return a + b + c;
}
}

5.6 staticメソッド

staticメソッドは、インスタンス化しなくてもクラスから直接呼び出すことができるメソッドです。staticメソッドは、主にクラス全体に関連する操作を行う場合に使用されます。例えば、MathクラスのMath.pow()などのメソッドはstaticメソッドです。

5.6.1 staticメソッドの定義

次に、staticメソッドを定義し、使用する例を示します。

public class Calculator {
public static int add(int a, int b) {
return a + b;
}
}

このaddメソッドは、Calculatorクラスのインスタンスを作成せずに呼び出すことができます。

public class Main {
public static void main(String[] args) {
int sum = Calculator.add(10, 20);
System.out.println("合計は: " + sum);
}
}
  • staticメソッドの利点: メモリ効率が高く、簡単にアクセスできるため、ユーティリティメソッドなどに適しています。
  • 制約: staticメソッド内ではインスタンス変数を使用できません。クラス変数や他のstaticメソッドのみを使用できます。

5.7 Javaのメソッドまとめ

この章では、Javaのメソッドの基本構造から、メソッドの呼び出し、引数と戻り値、メソッドのオーバーロード、staticメソッドについて学びました。メソッドを使うことで、コードの再利用性が高まり、プログラムがより整理され、理解しやすくなります。

メソッドの使い方をマスターすることで、Javaプログラミングはより強力で効率的になります。次章では、オブジェクト指向プログラミングの重要な概念であるクラスとオブジェクトについて学び、Javaのさらなる機能を探求していきます。