![](/img/trans.png)
[英]How can I access members of a private abstract to class for read-only purposes in a public class?
[英]No public members in abstract class
我正在構建一些與HTTP Web服務交互的代碼。 要與它交互,可以使用HTTP GET請求或使用HTTP POST在其上調用“命令”。
我想創建一個封裝和隱藏HttpWebRequest對象的基類(例如,ServiceCommand),但我不相信我希望它公開提供任何功能,只提供給子類。
子類可以是(例如)SearchCommand或FetchCommand,它們將使用基類中受保護方法提供的功能。
基本上,我的問題是:創建只有受保護成員的類而不是公共成員的類被認為是不好的設計。
一般問題我問自己設計:
最后是私有與公共 - 如果您認為子類需要訪問基類值,則創建受保護的成員變量。 無論您是否在基類中擁有公共屬性,此變量都將起作用。 執行此操作后 - 如果您認為該值在外部有用,則可以在基類中添加get / set。 這最終看起來像:
public abstract class BaseClass { protected object _member; public object MemberGet { return _member; } } public class InheritClass : BaseClass { // now the base class can "decide" to set the member or implement its own set rules public static void RoutineThatSetsMember(object value) { _member = value; } }
我不確定這些是每個人都使用的規則,但也許它會對一般設計有幫助(或者至少讓對話繼續前進)!
這是關於“是A”和“有A”之間的區別的問題。
關於“是A”,如果B類繼承自接口A或A類,則意味着B是A的一種類型,B應該具有與A相同的行為,而這些行為由公共成員函數定義。
由於“有A”,B類只想使用A類的實現,因此B將保持對A的引用,而不是繼承自A。
所以對於你的情況,這是一個“有A”的關系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.