2013-06-21 58 views
0

訪問私有字段我有2個班在子類中

class A { 
    private int count; 
} 

class B extends A { 
    //need to access count here 
} 

我可以使用什麼標準的方式來訪問它?

+0

getters/setters是您要查找的單詞。或者讓它「受保護」。 – Maroun

+1

。 。 。 。 。保護 –

+0

如果'A'和'B'在同一個包中,然後包私有 - 它是默認的,所以沒有關鍵字 - 將略微優於'protected' – emory

回答

1

你可以宣佈你的領域爲protected,那麼這將是對所有子類可以訪問和封裝本地類。

如果每個人都可以看到此字段,那麼您也可以擁有getters/setters(一般慣例)。 然後您只需撥打getCount()方法即可獲得計數。

請參閱這裏getters/setters example

+0

我會去與getter,謝謝你的鏈接。 – user2509983

7

要麼countprotected要麼在A中添加getCount()方法。

+2

第一個建議「受保護」的人+1。 – Maroun

+0

我認爲會有一些問題與陰影(如果子類具有相同的變量名稱)與保護,不是嗎? – kosa

+0

@Nambari這當然值得考慮。我可能只是使用一個getter。 –

0
class A { 
    private int count; 

    public int getCount(){ 
     return count; 
    } 
} 

class B extends A { 
    //need to access count here 
} 
-1

的Java阻止繼承到子類中的私有字段。如果您想訪問這些字段,您可以使用評估者即getter方法,也可以將字段訪問類型更改爲受保護或公開。同樣,受保護的只有在子類文件位於同一目錄中時纔有效。如果您將文件放在單獨的目錄中,則需要將字段訪問類型更改爲公開

+0

通過目錄,我認爲你的意思是包,在這種情況下,你對'protected'的描述不準確,而是描述'package-private' – femtoRgon