向下转换为间接子类不起作用?
Down Casting to indirect subclass does not work?
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 中工作??
类 只能转换到他们的父 类,他们不知道他们的子 类。
由于您的对象是 B
的实例,它没有实现 C
的方法。
这会起作用:
A a = new C();
a.printA(); // work
B b = (B) a;
b.printB(); // work
C c = (C) b;
c.printC(); // work
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 中工作??
类 只能转换到他们的父 类,他们不知道他们的子 类。
由于您的对象是 B
的实例,它没有实现 C
的方法。
这会起作用:
A a = new C();
a.printA(); // work
B b = (B) a;
b.printB(); // work
C c = (C) b;
c.printC(); // work