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延伸,B从A
延伸
为什么从A到B的下行工作,并且从B到C不起作用,虽然它们之间的关系像A和B,B是C的父类,所以它如何工作JVM ??
答案 0 :(得分:6)
只能将类转换为其父类,它们不了解其子类。
由于您的对象是B
的实例,因此它不会实现C
的方法。
这将有效:
A a = new C();
a.printA(); // work
B b = (B) a;
b.printB(); // work
C c = (C) b;
c.printC(); // work