2015-07-20 44 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;