class 子クラス extends 親クラス {}
privateフィールド/メソッドにはアクセスできないサブクラスが生成される前、子クラスのコンストラクタの前に親クラスのコンストラクタが実行される
AbstractClass a[] = new AbstractClass[2];
a[0] = new SubClass1();
a[1] = new SubClass2();
public:継承されるprotected:継承されるpackage-private(デフォルト):継承される(同一パッケージ)private:継承されない(存在するが、直接アクセスできない)super:親クラスを指す指標super.method();super(引数);
@Override
戻り値型 メソッド名(引数) {}
@Override:
Animal a = new Dog();
a.speak(); // Dogのspeak()が呼ばれる
実行時に、実体の方に応じて呼ばれるメソッドが決まる仕組み
AnimalDogDogのメソッドDog d = (Dog) a; // 実体がDogでないとエラー
if (a instanceof Dog) {
Dog d = (Dog) a;
}