Method Overloading
CoddyのJavaジャーニー「基礎」セクションの一部 — レッスン 54/73。
Java では、メソッドのオーバーローディングにより、同じ名前ですがパラメータが異なる複数のメソッドを定義できます。これにより、類似の機能を実行するが異なるデータ型や引数の数で動作するいくつかのメソッドを持つことができます。
重要なのは、各オーバーロードされたメソッドが一意のメソッドシグネチャを持つことです。メソッドシグネチャは、メソッド名とパラメータの型および順序によって決定されます。
メソッドのオーバーローディングの主なルールは以下のとおりです:
- 同じ名前:すべてのオーバーロードメソッドは同じ名前でなければなりません。
- 異なるパラメータ:メソッドの各バージョンは、パラメータの数が異なるか、パラメータの型が異なるか、またはその両方が異ならなければなりません。
- 戻り値の型だけでは不十分:オーバーロードされたメソッドは、戻り値の型のみで異なることはできません。パラメータリストが異ならなければなりません。
メソッドオーバーローディングを説明する例を以下に示します:
public class MathUtils {
public static int add(int a, int b) {
return a + b;
}
public static double add(double a, double b) {
return a + b;
}
public static int add(int a, int b, int c) {
return a + b + c;
}
}この例では、add という名前の3つのメソッドがあります。最初のものは2つの整数を加算し、2番目のものは2つのdoubleを加算し、3番目のものは3つの整数を加算します。
Java は、メソッド呼び出し時に渡される引数に基づいて、呼び出すメソッドを決定します。
メソッドのオーバーローディングはコードをより読みやすく、再利用しやすくします。類似したタスクを実行するメソッドに対して異なる名前を作成する代わりに(例: addInts、addDoubles、addThreeInts)、単一の名前 add を使用し、コンパイラがコンテキストに基づいて適切なメソッドを選択するようにできます。
覚えておいて:オーバーローディングには異なるパラメータの型または数が必要で、パラメータ名や戻り値の型が異なるだけでは不十分です。
チートシート
メソッドオーバーローディングは、同じ名前だが異なるパラメータを持つ複数のメソッドを許可します:
メソッドオーバーローディングのルール:
- 同じメソッド名
- 異なるパラメータ(数、型、または順序)
- 戻り値型だけではオーバーロードに十分ではありません
public class MathUtils {
public static int add(int a, int b) {
return a + b;
}
public static double add(double a, double b) {
return a + b;
}
public static int add(int a, int b, int c) {
return a + b + c;
}
}Javaは、メソッド呼び出し時に渡される引数に基づいて、どのメソッドを呼び出すかを決定します。
自分で試してみよう
このレッスンにはコードチャレンジは含まれていません。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
4Operators Part 1
Arithmetic OperatorsModulo OperatorIncrement/DecrementPost Increment/DecrementArithmetic ShortcutsComparison OperatorsString Comparison10Methods (Functions)
Declaring MethodsMethod ParametersReturn TypesMethod OverloadingRecap - Sigma FunctionRecap - Validation FunctionVoid Methods5Operators Part 2
Logical Operators Part 1Logical Operators Part 2Recap - Simple LogicLogical Operators Part 3Logical Operators Part 43Variables Part 2
ConstantsNaming ConventionsRecap - Initialize VariablesType Casting Part 1Type Casting Part 26Decision Making
If StatementIf - ElseSwitch StatementTernary OperatorRecap - If ElseNested If - Else