public class Override2 {
void display(){
System.out.println("Super");
}
public static void main(String[] args) {
OverrideSub[] ors = {new OverrideSub()};
ors[0].display(); // -> sub
Override2[] orr = ors;
orr[0].display(); // -> sub
}
}
class OverrideSub extends Override2 {
void display(){
System.out.println("Sub");
}
}
これ。
public class Override2 {
//void display(){
// System.out.println("Super");
//}
public static void main(String[] args) {
OverrideSub[] ors = {new OverrideSub()};
ors[0].display();
Override2[] orr = ors;
orr[0].display();
}
}
class OverrideSub extends Override2 {
void display(){
System.out.println("Sub");
}
}
こうするとコンパイルエラーになる。
な、なんでスーパークラスにキャストしたのにサブクラスのメソッドが呼ばれるんだYO
と思ったけど
なんかひも付けされとるらしい。
7.3 オーバーライドされたメソッドを呼び出すと?再び : Javaのオブジェクト指向入門
ここを読むとしあわせになれます