我是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();
}
}