如果我在父類中有一堆字段都需要被子類繼承,那麼將子類嵌套在超類中會更好嗎?比私人還是使用受保護的訪問者?或者其他一些選擇?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. 訪問基類從派生類中受保護的嵌套類
- 4. Robolectric創建內部嵌套受保護類的陰影
- 5. 從嵌套結構調用受保護的基類函數
- 6. 訪問受保護的成員[嵌套類]
- 7. 反射沒有找到嵌套類型的受保護字段
- 8. 「無法批量分配受保護的屬性」與嵌套的受保護模型
- 9. Java中受保護的類結構?
- 10. 繼承和受保護類java
- 11. 受保護的內部和受保護的行爲類似
- 12. 受保護的派生類
- 13. .NET中受保護的類
- 14. 受保護與不受保護的區別
- 15. 嵌套窗體「無法批量分配受保護的屬性」
- 16. 嵌套形式 - 不能質量分配受保護的屬性
- 17. 「不能批量分配受保護的屬性」嵌套屬性
- 18. 批量分配受保護的屬性(嵌套形式)Ruby/Rails
- 19. 類不保留受保護的值
- 20. 如何保護java.lang.Object的受保護方法免受子類攻擊?
- 21. 如何從成員訪問受保護/私有嵌套類指針
- 22. Java嵌套類
- 23. Java的嵌套類
- 24. Java:受保護的,可見的
- 25. 嵌入播放器與受保護的視頻
- 26. Ruby:類中的嵌套類與嵌套類中的嵌套相同?
- 27. Java中受保護的方法?
- 28. Java中的受保護方法
- 29. Java:覆蓋受保護的字符串
- 30. Java:跨包的受保護訪問
由於這很大程度上取決於您的用例,請您詳細說明一下嗎? – 2013-04-09 07:47:38
定義「更好」。 – 2013-04-09 07:53:44
我有一個超類(Employee),它擁有很多其子類(員工類型)以及一些工資/稅收計算方法(抽象和具體)通用的數據。這個子類做了大量的計算,它需要超類中字段的數據。只有很少的字段需要從這個類的外部訪問。 – 2013-04-09 07:56:24