我对这个(可行的)简单的演员示例有一个尴尬的问题。你能帮我吗?
public class Example1 {
interface ParentIf{}
interface ChildIf extends ParentIf {}
interface OtherIf {}
class ParentCl {}
class ChildCl extends ParentCl {}
class OtherCl {}
public static void main(String[] args) {
ChildIf cI = null;
ParentIf pI = null;
OtherIf oI = null;
ChildCl cC = null;
ParentCl pC = null;
OtherCl oC = null;
cI = (ChildIf)oI; //case1 - fine
cC = (ChildCl)oC; //case2 - inconvertible types
cI = (ChildIf)oC; //case3 - fine
}
}
但更尴尬的是,我不知道为什么其他两个陈述都没问题。
我看不到OtherIf和ChildIf之间的任何联系。那么当没有"扩展"时,如何将OtherIf强制转换为ChildIf?在case1?
中这两个接口之间答案 0 :(得分:2)
cI = (ChildIf)oI;
很好,因为oI
可以是实现ChildIf和OtherIf的类的实例。
cI = (ChildIf)oC;
很好,因为oC
可以是扩展OtherClass
实现ChildIf
的类的实例。