gpt4 book ai didi

java - JAVA中的隐式接口(interface)、类转换

转载 作者:行者123 更新时间:2023-12-02 01:46:34 28 4
gpt4 key购买 nike

我正在学习 JAVA 程序员 I 证书,在问题中有一个我无法理解:

//Given:

interface I{}
class A implements I{}
class B extends A {}
class C extends B{}

//and

A a = new A();
B b = new B();

确定编译和运行时不会出现错误的选项。

A. a = (B)(I)b;
B. b = (B)(I)a;
C. a = (I)b;
D. I i = (C)a;

现在我知道答案是A),但我不明白,如果B类是A类的子类,那么'a'可以等于'b'而无需转换,为什么答案是B ) 错误的?连铸 (B)(I) 是什么意思?

最佳答案

B 扩展了 A。因此您可以将 B 的实例强制转换为 A,但反之则不然。代码将编译,但会在运行时抛出 ClassCastException。

尝试转换为后代类称为向下转换。在本例中,转换为“I”将允许该代码编译,但会导致抛出 ClassCastException。

关于java - JAVA中的隐式接口(interface)、类转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53620877/

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