如果我在父類中有一堆字段都需要被子類繼承,那麼將子類嵌套在超類中會更好嗎?比私人還是使用受保護的訪問者?或者其他一些選擇?Java - 受保護的'getters'與嵌套類
0
A
回答
3
最簡單的解決方案是使超類字段或實例變量受到保護,但是,如果將它們設置爲私有,則可以始終通過getter和setter訪問它們,因爲它遵循封裝原則,因此概念上更好。
1
最簡單的解決方案似乎是讓這些字段受到保護,除非您有一個令人信服的理由不這樣做,否則就去做。
1
我認爲使用受保護的訪問器是最好的方法和更常見的方法。
1
如果你希望它可以被子類訪問,你只剩下兩個選項,public和protected。受保護的可能是你想要的。當您在java中使用extends
關鍵字進行繼承時,下表適用。
Access Levels
Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y N
no modifier Y Y N N
private Y N N N
如果您在超類中發現了子類,那麼您也可以使用私有類。這是因爲內部類是父類的一部分,因此也可以訪問私有方法。
public class Parent {
private int x = 5;
//Not really a subclass
private class NestedClass {
public NestedClass() {
int hax = new Parent().x; // Works!
}
}
//More of a nestedclass than a subclass.
private class SubClass extends Parent {
public SubClass() {
int stillHax = new Parent().x;
}
}
}
你,直到你使用extends
或implements
關鍵字不使用繼承,所以你可能希望有子類擴展父類(在不同的文件中)和變量會保護(或公共)級訪問。請注意,處於同一家庭或同一班級需要網格中的優秀。以上兩個例子的工作原因是SAME類中的其他類作爲父類。
只要按照網格,就是這樣。
1
有些情況下,暴露受保護的字段或受保護的訪問者方法是有意義的。所以這一切都取決於您的父類的設計,並且您希望子類如何使用您的父類。
但是,這是肯定的:「是否有更好的方式將子類嵌套在超類中」< - 這很少是正確的選擇。
+0
謝謝,我會記住它。 – 2013-04-09 08:34:49
相關問題
- 1. 嵌套類:從嵌套保護的類
- 2. 反射沒有找到嵌套類型的受保護字段
- 3. Java中受保護的類結構?
- 4. 繼承和受保護類java
- 5. 受保護的派生類
- 6. .NET中受保護的類
- 7. 受保護與不受保護的區別
- 8. 「不能批量分配受保護的屬性」嵌套屬性
- 9. 嵌套形式 - 不能質量分配受保護的屬性
- 10. 如何保護java.lang.Object的受保護方法免受子類攻擊?
- 11. 如何從成員訪問受保護/私有嵌套類指針
- 12. Java的嵌套類
- 13. Java:受保護的,可見的
- 14. 嵌入播放器與受保護的視頻
- 15. Ruby:類中的嵌套類與嵌套類中的嵌套相同?
- 16. Java:跨包的受保護訪問
- 17. Java中受保護的方法?
- 18. Java中的受保護方法
- 19. Github受保護的分支與GitFlow
- 20. 對象類的受保護方法MemberWiseClone()
- 21. 訪問Android類的受保護變量
- 22. 密封類中的受保護成員
- 23. 克隆受保護的邊緣受保護的驅動器
- 24. 來自子類的Java訪問受保護變量
- 25. 如何在受保護的java類上實現接口
- 26. '保護'是一個可接受的Java類名稱
- 27. Java通過受保護的getter訪問私有超類成員
- 28. 環回保護嵌套關係
- 29. Java類名與嵌套包名相同
- 30. 覆蓋受保護的內部受保護!
由於這很大程度上取決於您的用例,請您詳細說明一下嗎? – 2013-04-09 07:47:38
定義「更好」。 – 2013-04-09 07:53:44
我有一個超類(Employee),它擁有很多其子類(員工類型)以及一些工資/稅收計算方法(抽象和具體)通用的數據。這個子類做了大量的計算,它需要超類中字段的數據。只有很少的字段需要從這個類的外部訪問。 – 2013-04-09 07:56:24