public class A
{
public void printA(){
System.out.println("A");
}
}
public class B extends A
{
public void printB(){
System.out.println("B");
}
}
public class C extends B
{
public void printC(){
System.out.println("C");
}
}
public class test {
public static void main(String[] args)
{
A a = new B();
a.printA(); // work
B b = (B) a;
b.printB(); // work
C c = (C) b;
c.printC(); // not work throw java.lang.ClassCastException
}
}
私は三つのクラスのAを持っており、BとC
CがBから延び、ダウンAからBに仕事をキャスト、およびそれらの間の関係が、BからCに動作しない理由Bは
から延びAとBのように、BはCの親ですので、JVMはどのように動作しますか?間接的なサブクラスへのキャスティングは機能しませんか?
は、あなたがオブジェクトのクラスを変更することはできません、あなただけの参照のクラスを変更することができます。 –
私はどこで私のコードでオブジェクトのクラスを変更しようとしているのですか? –
'(C)b'を実行すると、これがオブジェクトの型を' C'に変更するふりをしようとしていますが、そうではありません。オブジェクトの型は常に 'B'です。 –