継承したフィールドとメソッド
出力はどれか。
public class Main {
public static void main(String[] args) {
Manager m = new Manager();
m.name = "Sato";
System.out.println(m.greet() + " " + m.level);
}
}
class Employee {
String name;
String greet() { return "I am " + name; }
}
class Manager extends Employee {
int level = 2;
}
- A
I am Sato 2 - B
I am null 2 - C コンパイルエラーになる
- D 実行時に例外が発生する
正解と解説を見る
正解: A
- A: Manager は Employee の name と greet() を継承しているので、I am Sato と level の 2 が出力されます。
- B: m.name = "Sato" で継承したフィールドに代入しているので、null ではありません。
- C: name と greet() は Manager に継承されるので、m.name も m.greet() も使えます。
- D: すべてのフィールドに値が入っていて、例外になる処理はありません。
ポイント
- サブクラスは親クラスのフィールドとメソッド (private 以外) を受け継ぎ、自分のもののように使えます。