[英]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.