gpt4 book ai didi

java - 向下转换为间接子类不起作用?

转载 作者:行者123 更新时间:2023-12-01 07:49:50 27 4
gpt4 key购买 nike

        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

关于java - 向下转换为间接子类不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40084407/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com