メソッドのオーバーローディング
メニューを表示するにはスワイプしてください
Javaにおける異なるパラメータを持つメソッドの利用
Javaでは、同じ名前の異なるメソッドを記述することが可能。 これらのメソッドは、戻り値の型やパラメータの型が異なる場合がある。 この仕組みにより、さまざまな型に対応したメソッドの利用が可能となる。 配列を出力するメソッドを例に考える。
このメソッドをint型の値を受け取るように記述できるが、もしchar型の配列を出力したい場合はどうするか?
異なる名前のメソッドを作成する必要があるのか?
この目的のために、Javaはメソッドのオーバーロードを提供している。
前の章で扱ったデータの出力や配列の反転の例を見てみる。
Main.java
123456789101112131415161718192021222324252627// method to reverse an int array static int[] flipArray(int[] array) { // creating a new array to store the reversed elements int[] result = new int[array.length]; int index = 0; // iterating over the input array in reverse order for (int i = array.length - 1; i > 0; i--) { result[index] = array[i]; index++; } // returning the reversed int array return result; } // method to reverse a char array static char[] flipArray(char[] array) { // creating a new array to store the reversed elements char[] result = new char[array.length]; int index = 0; // iterating over the input array in reverse order for (int i = array.length - 1; i >= 0; i--) { result[index] = array[i]; index++; } // returning the reversed char array return result; }
メソッド flipArray をオーバーロードし、異なるパラメータ int と char を受け取り、返すようにしました。このメソッドを呼び出すと、int 型と char 型の両方を受け取り、返すことができます。
次に、配列を画面に表示するメソッドもオーバーロードしましょう。このメソッドも int 型と char 型を受け取り、返す必要があります:
Main.java
12345678910111213141516171819// method to print an int array static void printArrayToTheConsole(int[] array) { // iterating through each element of the int array for (int element : array) { System.out.print(element + " "); } // printing a blank line after the array System.out.println(); } // method to print a char array static void printArrayToTheConsole(char[] array) { // iterating through each element of the char array for (char element : array) { System.out.print(element + " "); } // printing a blank line after the array System.out.println(); }
ここでは、メソッド printArrayToTheConsole をオーバーロードし、int 値と char 値を受け取り、返すようにしています。
ここでは、オーバーロードされたメソッドを組み合わせて、main 型の配列と int 型の配列を char メソッドで使用する例を示します。
Main.java
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354package com.example; public class Main { // main method to run the application public static void main(String[] args) { // do not modify the code below int[] intArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; char[] charArray = {'s', 'b', 'c', 'd', 'e', 'f', 'g'}; printArrayToTheConsole(flipArray(intArray)); printArrayToTheConsole(flipArray(charArray)); } // method to reverse an int array static int[] flipArray(int[] array) { int[] result = new int[array.length]; int index = 0; // iterating over the array in reverse order for (int i = array.length - 1; i > 0; i--) { result[index] = array[i]; index++; } return result; } // method to reverse a char array static char[] flipArray(char[] array) { char[] result = new char[array.length]; int index = 0; // iterating over the array in reverse order for (int i = array.length - 1; i >= 0; i--) { result[index] = array[i]; index++; } return result; } // method to print an int array to the console static void printArrayToTheConsole(int[] array) { // printing each element of the int array for (int element : array) { System.out.print(element + " "); } System.out.println(); } // method to print a char array to the console static void printArrayToTheConsole(char[] array) { // printing each element of the char array for (char element : array) { System.out.print(element + " "); } System.out.println(); } }
異なる2つのメソッドをオーバーロードし、これらのメソッドを char 型の配列でも使用できるようにしました。また、これらのメソッド名も少し変更し、今後さまざまな型の値を受け取り、返すように複数回オーバーロードできるようにしています。
これを確認するために、int 型と char 型の2つの異なる配列を作成し、それぞれをオーバーロードされたメソッドに渡して正しい結果を得ました。
ちなみに、オーバーロードされたメソッドにはすでに触れています。
たとえば、String クラスの substring() メソッドはオーバーロードされており、1つのパラメータ int beginIndex または2つのパラメータ int beginIndex, int endIndex を持つことができます。
メソッドのオーバーロードは非常に便利で、実際によく使われています。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください