class A {}
class B extends A{}
A objectX = new B();
最後一行是什麼意思?它是A類的對象還是B類的對象?我對多態性和對象的類型感到困惑
實例和對象是否有相同的含義?是A的objectX實例還是B的一個實例?
當我們運行objectX.SomeMethod。編譯器會檢查什麼?或者方法會在運行時檢查?
class A{}
class B extends A{}
public class Main{
public static void main(String[] args){
A objectX = new B();
System.out.println(objectX instanceof B);//line 1
System.out.println(objectX instanceof A);//line 2
}
}
如果我運行上面的代碼爲什麼它給了我真正的線1和線2.objectX指向B.How來_對象是A的一個實例?
它是類型A的引用,引用了類型B的對象。這意味着您只能調用方法並引用A類中定義的字段。 –
如果你在代碼中顯示你的問題,而不是試圖用文字描述它會容易得多。 –
訪問: https://stackoverflow.com/questions/13077009/java-difference-between-ax-new-a-and-ax-new-b-when-b-extends-a –