我有一個從邊界派生的DraggableBorder類,但是我想讓Border.Child變爲私有的。 我該怎麼辦?我可以在C#中的派生類中將公共成員從父類更改爲私有?
0
A
回答
2
你不能。它會破壞Liskov's Substitution Principle。如果DraggableBorder
派生自Border
,我希望能夠像使用Border
一樣使用它。
畢竟,別人也可以這樣寫:
Border border = new DraggableBorder();
border.Child = ...;
你如何期望編譯器停止?
0
您可以通過定義一個新的私有成員
public class DraggableBorder : Border
{
private new object Child {get;set;}
}
這樣編譯器會阻止您訪問原始子屬性
DraggableBorder myBorder = ...;
myBorder.Child ; // this will result in a compiler error
隱藏原始兒童然而,這是因爲你沒有真正的保護可以很容易地解決它
((Border)myBorder).Child; // this will be ok
Border myBaseBorder = myBorder;
myBaseBorder.Child; // this will be ok
相關問題
- 1. 派生類可以訪問其基類的私有成員
- 2. 我可以在派生類中創建一個公共成員變量private嗎?
- 3. 從基類繼承私有成員到派生類C++
- 4. 私人成員如何在C#中的派生類中訪問?
- 5. 公共類,但私有成員變量?
- 6. 我可以在基類中修改派生類中的公共插槽的公共函數嗎?
- 7. 我們可以從.net中的私有基類型創建派生的公共類型嗎?
- 8. 將成員從公共更改爲私人
- 9. 爲什麼派生類繼承基類的私有成員?
- 10. 基類的私有成員是否始終在C++的派生類中繼承?
- 11. 更改私有類成員的類
- 12. 在派生類中爲成員變量使用派生類型
- 13. 爲什麼我可以通過派生對象的基類指針訪問派生的私有成員函數?
- 14. 如何從基類公開繼承,但是派生類中的基類有一些私有的公共方法?
- 15. C++中派生類的對象可以被父類訪問嗎?
- 16. C#繼承私有類和公共成員
- 17. C#不能從父類訪問表單的公共成員
- 18. 可派生類訪問私有靜態成員函數
- 19. 從(成員)函數中派生類型
- 20. 我可以讓派生類在Java中從其基類繼承派生成員嗎?
- 21. 如何在派生類中訪問基類的私有數據成員?
- 22. 在C++中,我可以從結構中派生一個類
- 23. C++派生類訪問基類成員
- 24. 爲什麼要將基類中的受保護訪問更改爲派生類中的公共訪問權限?
- 25. 有沒有辦法從CoffeeScript類中的私人函數訪問公共成員
- 26. 在派生類中實現虛函數時訪問基類私有成員
- 27. 訪問繼承的私有基類成員...通過派生類對象...在基類成員中創建
- 28. 不可達成員在派生類中的模板類
- 29. 派生類成員函數在C++
- 30. C++:從派生類訪問基地或全局變量的私有成員
你到底需要什麼? –