2015-07-20 50 views
1
public class Parent { 
     int num = 10; 

     public void method(){ 
      System.out.println("Parent method"); 
     } 
} 

public class Child extends Parent { 
    int num = 20; // Why this declaration is allowed ? 
    public void method(){ 
     System.out.println("Child method"); 
    } 

    public static void main(String[] args) { 

     Parent f = new Child(); 
     Child f2 = new Child(); 
     System.out.println(f.num); 
     System.out.println(f2.num); 
    } 

} 

爲什麼在子類中允許使用同名變量聲明。 根據繼承,子應該繼承父屬性。 請解釋。Java繼承 - 父母和子女的成員

+0

你有沒有嘗試讀取自己任何一本書或在線文檔?你是否從這些教程中獲得了關於此的任何內容? –

+0

做'Child c = new Child()'和'Parent p = new Child()'並打印'num'的值..你會知道爲什麼:) – TheLostMind

+0

它允許改變屬性的值。例如每輛車都有一個車身顏色,但顏色是不同的。因此,如果它不被允許,那麼每輛車都有相同的顏色 –

回答

1

爲什麼這個聲明是允許的?

因爲語言允許覆蓋方法和隱藏成員 - 在你的情況你隱藏父母num成員。

爲孩子的num20,如果你需要訪問父num價值,你要做的:

int parentNum = super.num;