2012-10-27 92 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)。 –