java
1class A { 2 void hello() { 3 System.out.println("A"); 4 } 5} 6 7class B extends A { 8 void hello() { 9 System.out.println("B"); 10 } 11} 12 13class C extends A { 14 void hello() { 15 System.out.println("C"); 16 } 17} 18 19public class Main { 20 public static void main(String[] args) { 21 A a = new B(); 22 B b = (B) a; 23 C c = (C) b; 24 c.hello(); 25 } 26}
こちらのコード、Java Programmer Silverの問題集の問題です。
これを実行したところどうなるかという問題で自分はClassCastException(例外)が発生すると思ったのですが、答えはコンパイルエラーでした。
ClassCastExceptionは「あるオブジェクトを継承関係にないサブクラスにキャストしようとしたことを示すためにスローされます。」とかかれていましたが、まさに今回がそうなのではないですか?何故、コンパイルエラーになるのか教えてください。
[実際にEclipseで実行したときに出たエラー]
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
B から C へキャストすることはできません
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。