class Parson{
String displayDetails(){
return "person";
}
}
public class student exends parson{
string displayDetails()
return "student";
}
public static void main (String [] args) {
Person obj = new Student (); //アップキャスト
Student obj1 = (student)obj; //ダウンキャスト
System.out.print(obj1.displayDetails());
}
}
このコードをコンパイル、および実行すると、どのような結果になりますか
A Parson
B student
C コンパイルに失敗
D 実行時に例外がスローされる !
この問いでは、DかBが正解と思われるのですか、ダウンキャスト時、明示的にキャストしているのでコンパイルエラーにはならないが、スーパ型の機能はサブクラス型は持ってないので、実行時に例外がスローされる。
もしくは、ダウンキャストしても、スーパークラス型の中にサブクラスのインスタンスを作ってたわけであって、機能するのはサブクラス型だから問題なく出力できる。よってB
どちらの理解のほうが正しいのでしょうか。