And*_*tib 0 java inheritance casting multiple-inheritance downcast
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
}
}
Run Code Online (Sandbox Code Playgroud)
我有三个A类和B类,C
C从B延伸,B从A延伸到A
为什么从A到B,而不是从B到C,尽管它们之间的关系如A和B,B是父的C那么JVM怎么工作?
类只能转换为它们的父类,它们不了解它们的子类.
由于您的对象是实例B,因此它不实现方法C.
这将有效:
A a = new C();
a.printA(); // work
B b = (B) a;
b.printB(); // work
C c = (C) b;
c.printC(); // work
Run Code Online (Sandbox Code Playgroud)