如果您從聲明瞭某些成員變量的活動繼承,那麼如何在執行繼承的子類中訪問這些成員變量?在java中訪問繼承類變量
回答
public
或protected
成員名稱可以通過this.memberName
從任何構造函數或非static
方法或初始值設定項來訪問。
private
或包級別成員(從不同包中的子類訪問)不能直接訪問,需要通過非特權接口(如public
獲取器)訪問。
如果成員被聲明爲private
,或者如果它們是使用默認(包)訪問聲明的,並且您的子類位於不同的類中,則無法訪問這些變量。如果提供訪問器,則可以使用這些訪問器。否則,他們無法訪問。
如果成員宣佈protected
或public
,那麼你訪問他們,如果他們在自己的類(this.var
,或者只是var
如果沒有歧義)被宣佈。如果在子類中有一個與超類同名的成員,則可以使用super.var
來訪問超類變量。
downvoter會謹慎解釋嗎? – 2012-01-06 19:37:17
+1以反駁無法解釋的反對票。 – mre 2012-01-06 19:40:15
class A {
protected int a = 3;
}
class B extends A {
protected int b = 2;
void doIt() {
System.out.println("super.a:" + super.a);
System.out.println("this.b: " + this.b);
}
}
如其他人所述,可通過子類中的this.field
訪問公共和受保護字段。包專用字段也可以用相同的方式訪問,但只有當子類與父代在同一個包中。
私有字段不能以這種方式訪問,但如果安全設置允許,可以使用Java reflection訪問它們。一般不建議這樣做(私人成員通常是私人的),但在某些情況下它可能很有用,例如訪問私人類成員進行代碼測試。請參閱the answers to this question瞭解如何以這種方式使用反射。
- 1. 多態:訪問繼承類變量
- 2. 訪問非繼承類的變量
- 3. 在Java中繼承類變量值?
- 4. 訪問繼承類?
- 5. 類變量繼承
- 6. C++類繼承變量
- 7. 從類繼承變量
- 8. 用Swift類繼承變量
- 9. 使用繼承訪問變量外的類
- 10. Java中的變量繼承(初級)
- 11. 訪問繼承源文件中的類
- 12. Java類繼承
- 13. 類繼承java
- 14. 靜態變量在基類和繼承
- 15. 類變量初始化在Python3繼承
- 16. python中的類變量的繼承
- 17. 類變量中的Python靜態繼承
- 18. 類變量對子類的繼承
- 19. 在java中,繼承類也繼承自類Object?
- 20. 繼承的子類中的Java public/protected變量值爲空
- 21. Java繼承:抽象類中的「Casting」變量爲靜態
- 22. Java不繼承訪問器方法?
- 23. as3繼承變量
- 24. twython繼承變量
- 25. 無法訪問內部類的公共變量...繼承自父類
- 26. 從繼承類更改java超類變量
- 27. Java繼承覆蓋實例變量
- 28. 重寫變量Java繼承的說明
- 29. Java繼承 - 實例變量覆蓋
- 30. Java繼承:靜態變量混淆
另請檢查您是否沒有命名衝突:http://java.sys-con.com/node/46344如果您遇到意外的行爲 – jefflunt 2012-01-06 19:26:49