今回はメソッドのオーバーロードとオーバーライドに関する問題を解いてみましょう。
問題
次のプログラムを実行した場合の出力として正しいものを選んでください。
class Calculator {
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
}
public class Main {
public static void main(String[] args) {
Calculator calc = new Calculator();
System.out.println(calc.add(2, 3));
System.out.println(calc.add(2.0, 3.0));
}
}
選択肢
- A. 5と5.0が出力される
- B. 5と5が出力される
- C. 5.0と5.0が出力される
- D. コンパイルエラーが発生する
答えと解説
回答を見る
答え
A. 5と5.0が出力される
解説
解説のポイント:
- メソッドのオーバーロードの理解
- Javaによる型の選択ロジック
Javaでは、メソッドのオーバーロードを使用すると、同じ名前のメソッドを複数宣言して、引数の型や数を変えることができます。
ここで、calc.add(2, 3)
の呼び出しは、int型に一致するadd
メソッドを選択し、2 + 3
の結果である5
を返します。
一方、calc.add(2.0, 3.0)
の場合、double型に合わせたadd
メソッドが選ばれ、結果は5.0
として出力されます。