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