我是新來的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