簡體   English   中英

如何獲得對父類的私有變量的訪問權限?

[英]How can I gain access to a parent class's private variable?

我知道私有變量不會被繼承,那么如何在子類中訪問它呢?

 class A{
    private int i = 5;
    // more code
 }
 class B extends A{
    public int toInt(){
        return super.i;
    }
 }

通常,您會將i標記為protected ,這允許子類查看該字段。

另一種方法是編寫一個get樣式的函數,該函數有時會更好,特別是如果您要禁止子類寫入字段。 編寫put樣式的函數確實會破壞封裝。

反思還提供了另一種規避private ,但是不建議使用該方法。

通常,您不能也不應。 這就是該變量為private的原因。

如果要實現基類以允許其子類訪問私有成員,請實現protected訪問器方法(getter或setter)。 您也可以將字段標記為protected但我什至不建議您從此開始。 您需要非常認真的理由來設置非私有字段。

Java中可能的“解決方法”是使用反射API:

Field f = A.class.getDeclaredField("i");
f.setAccessible(true);
f.get();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM