我是新来的java,并且在尝试一些what is the output
问题时发现了这个问题。为什么这个接口实例在引用实现该接口的类实例时会出错
这条线InterfaceB obj = new ClassA();
给出错误,而其他不是。
我知道一个超类变量可以引用一个子类变量,它和接口相同。 但是在这种情况下会发生什么。我想知道看到的背后发生了什么。
interface InterfaceA { void methodA(); }
interface InterfaceB extends InterfaceA { void methodB(); }
class ClassA implements InterfaceA
{
public void methodA() {}
public void methodB() {}
}
class ClassB extends ClassA implements InterfaceB
{
public ClassB() {}
// InterfaceA obj = new ClassA(); no error
InterfaceB obj = new ClassA(); //give error: incompatible types
// InterfaceA obj = new ClassB(); no error
// InterfaceB obj = new ClassB(); no error
// ClassA obj = new ClassB(); no error
}
public class Online4 {
public static void main(String args[]) {
ClassB b = new ClassB();
}
}
我错过了InterfaceA是Hierarchy中的父级,InteraceB和ClassA就像兄弟姐妹一样。 – netsmertia