2017-08-03 80 views
0

我是java新手,正在閱讀有關動態調度的知識。我嘗試了它的程序,但是我得到的輸出是意想不到的。所以在下面的代碼中,我創建了兩個類一個Parent和另一個Child,並且在Child類中我創建了Child類的對象,並通過Parent類的變量引用它。當我使用該變量來打印i的值(這兩個類的int類型實例變量)時,我得到了父類的值,但它應該打印子類中的i的值。任何人都可以請清楚嗎?爲什麼父類的值是可變的顯示爲輸出

` 
    class Parent 
    { 
     int i=10; 
    } 
    class Child extends Parent 
    { 
     int i=20; 
     public static void main(String ar[]) 
     { 
      Parent obj= new Child(); 
      System.out.println(obj.i); 
     } 
    } 

` 
+0

這是正常的,它應該打印父值,如果該行'父的obj =新的Child();'被更改爲'Child obj = new Child()'這行''它會打印20個(根據我的測試)。 –

+0

但是它背後的原因是什麼 –

回答

相關問題