Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ メソッドのオーバーローディング | メソッド
Javaクラスとコアメカニクス

bookメソッドのオーバーローディング

メニューを表示するにはスワイプしてください

Javaにおける異なるパラメータを持つメソッドの利用

Javaでは、同じ名前の異なるメソッドを記述することが可能。 これらのメソッドは、戻り値の型パラメータの型が異なる場合がある。 この仕組みにより、さまざまな型に対応したメソッドの利用が可能となる。 配列を出力するメソッドを例に考える。

このメソッドをint型の値を受け取るように記述できるが、もしchar型の配列を出力したい場合はどうするか? 異なる名前のメソッドを作成する必要があるのか?

この目的のために、Javaはメソッドのオーバーロードを提供している。

前の章で扱ったデータの出力や配列の反転の例を見てみる。

Main.java

Main.java

copy
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 をオーバーロードし、異なるパラメータ intchar を受け取り、返すようにしました。このメソッドを呼び出すと、int 型と char 型の両方を受け取り、返すことができます。

次に、配列を画面に表示するメソッドもオーバーロードしましょう。このメソッドも int 型と char 型を受け取り、返す必要があります:

Main.java

Main.java

copy
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

Main.java

copy
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
package 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 を持つことができます。 メソッドのオーバーロードは非常に便利で、実際によく使われています

question mark

メソッドは何回オーバーロードできますか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  6

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 2.  6
some-alt