モジュールのレッスン (2/2)
メソッドとオーバーロード
メソッドはオブジェクトの動作を定義します。これらは、オブジェクトのインスタンス フィールドまたは受信パラメータを操作する、クラス内で宣言された関数と考えることができます。
メソッドの定義
Java のメソッドは次のもので構成されます。
- アクセス修飾子 (例:
public、private)。 - 戻り値の型 (例:
int、String、または何も返さない場合はvoid)。 camelCaseの メソッド名。- パラメータは括弧で囲まれています。
- 中括弧で囲まれた メソッド本体。
class Person {
String name;
public Person(String name) {
this.name = name;
}
// Method with return type String
public String greet() {
return "Ciao, mi chiamo " + name;
}
}メソッドの呼び出し
作成されたオブジェクトのメソッドを呼び出すには、ドット表記法 . を使用します。
public class Main {
public static void main(String[] args) {
Person p = new Person("Marco");
String message = p.greet(); // Calling the method
System.out.println(message);
}
}メソッドのオーバーロード
Java では、同じクラス内の 2 つ以上のメソッドは、異なるパラメータ リスト (パラメータの数、順序、または種類) を持っている限り、同じ名前を持つことができます。この概念は オーバーロード として知られています。
コンパイラは、呼び出し中に渡された引数を分析して、どのメソッドを呼び出すかを決定します。
class Printer {
// Method to print an integer
public void printValue(int number) {
System.out.println("Intero: " + number);
}
// Overloaded method to print a string
public void printValue(String text) {
System.out.println("Testo: " + text);
}
}値によるパラメータの受け渡し
Java では、すべてのパラメータは 値渡し (値渡し) で渡されます。これは、引数をメソッドに渡すと、Java が変数の値のコピーを作成し、それをメソッドに渡すことを意味します。
- プリミティブ型の場合、メソッド内で変更されても、メソッド外の元の値は変わりません。
- オブジェクト/参照の場合、オブジェクトへの参照がコピーされます。これは、元のオブジェクトが指すメモリ アドレスを変更することはできませんが、その内部状態 (フィールドなど) を変更することができ、その変更が外部から見えるようになるということを意味します。
オーバーロードの制限: 戻り値の型
戻り値の型のみに基づいてメソッドをオーバーロードすることはできないことに注意してください。たとえば、次のコードはコンパイル エラーを引き起こします。
class Example {
// ERROR: The signature of the two methods is considered identical
public int getNumber() { return 42; }
public double getNumber() { return 42.0; }
}コンパイラーは、パラメーターのみに基づいてメソッドを区別し、コンパイル時に呼び出すバージョンを決定する必要があります (オーバーロードはコンパイル時に解決されます)。
自分で試してみてください
2 つの数値の合計を返す public int add(int a, int b) メソッドを Calculator クラスに追加します。 main メソッドで、calc オブジェクトに対してこのメソッドを呼び出し、結果を整数変数に割り当てます。
ヒントを表示
メソッドを「public int add(int a, int b) { return a + b;」として宣言します。 }` を作成し、main メソッドで `int result = calc.add(5, 10);` として呼び出します。
3 回の試行後に解決策が利用可能になります
2 つの double パラメーターを受け取り、その合計を返す別のメソッドを作成して、Calculator クラスの add メソッドをオーバーロードします。
ヒントを表示
`public double add(double a, double b) { return a + b; と書きます。 }` 最初の add メソッドの直下にあります。
3 回の試行後に解決策が利用可能になります
2 つの数値の積を返す public int multiply(int a, int b) メソッドを Calculator クラスに追加します。 main メソッドで、calc オブジェクトに対してこのメソッドを呼び出し、結果を整数変数に割り当てます。
ヒントを表示
メソッドを「public int multiply(int a, int b) { return a * b;」として宣言します。 }` を作成し、main メソッドで `int result = calc.multiply(5, 10);` として呼び出します。
3 回の試行後に解決策が利用可能になります