【Java学習】09 参照型の型変換 [Java SE 11 Silver 紫本]

スーパークラス型の変数にサブクラスのオブジェクトを代入すると、インスタンスメンバはスーパークラス、インスタンスメソッドはstatic修飾子を付けない限りサブクラスのメンバが呼び出されます。

Amazonのブラックフライデーセールが明日までなので、Goldの紫本も購入しました。来年1月末までにSilver本とGold本を読破したいです。

前にも書きましたがオラクルの検定は受けません。苦痛でしかない練習問題を解く代わりにサンプルコードをいじって色々動作検証しています。その方が楽しいですし、スキルが身に付きやすいと思います。

class Super {
  String x = "Super : x";
  String y = "Super : y";
  void methodA() { System.out.println("Super : methodA()"); }
  static void methodB() { System.out.println("Super : methodB()"); }
}
class Sub extends Super {
  String x = "Sub : x";
  String y = "Sub : y";
  void methodA() { System.out.println("Sub : methodA()"); }
  static void methodB() { System.out.println("Sub : methodB()"); }
}
public class Main2 {
  public static void main(String[] args) {
    Super obj = new Sub();
    System.out.println(obj.x);
    System.out.println(obj.y);
    obj.methodA();
    obj.methodB();
  }
}
--------------------------------------------------
出力
--------------------------------------------------
Super : x
Super : y
Sub : methodA()
Super : methodB()