2012-10-27 139 views
0

我有这样一段代码为什么私有数据成员在子类继承

public class Base { 
    private int x=10; 
    void show(){ 
     System.out.println(x); 
    } 

} 


public class Child extends Base { 

    public static void main(String[] args) { 

     Child c1=new Child(); 
     c1.show(); 

    } 

} 

这段代码工作正常,输出是10.Can请人 细说这个私有数据成员是如何在孩子访问类..

+0

从'main'尝试'c1.x;',你会看到编译错误。 – Mahesh

回答

8

它不是。访问方法show()。父母的这种方法然后访问x字段。 show()方法具有默认访问权限,其中包括Child的访问权限,因为它在同一个包中。

+0

您确定调用的方法来自父级,而不是来自子级?我在'Child c1 = new Child()'中没有涉及到父项的任何事情。 c1.show();'。 –

+0

@BheshGurung show()方法是父级的一部分。它由孩子继承,但仍具有父级的所有访问权限。如果孩子已经重写了父方法,那么就不能再访问了。 –

+0

@BheshGurung如果您有权访问show()当然。默认模式[不](http://stackoverflow.com/questions/215497/in-java-whats-the-difference-between-public-default-protected-and- private)。 –