假设我有以下代码,它们运行时没有任何编译/运行时错误:
B b1 = new A();
B b2 = new C();
A a1 = (C) b2;
D d1 = new C();
B b3 = new B();
D d2 = new A();
D d3 = new B();
E e1 = new E();
D e2 = new E();
B e3 = new E();
C c1 = new C();
我需要弄清楚类之间的关系。据我了解:
(head) D <- B <- A <- C
我有两个问题:
我将E
放在哪里?可以在B / A / C
中的任何地方吗?
为什么当我设置Object var = new A();
然后尝试((C)var).someMethod();
时,我得到运行时错误提示Class A can not be cast to class C
?到目前为止,根据我的经验,我只能在Java中向下转换(正确吗?)。如果我尝试交换A
和C
,则会出现A a1 = (C) b2;
的编译错误,因此我猜想C
必须继承自A
?