對於一個撲克解析器(我的第一個學習c#的項目),我有一個父類clCardsHeld
和兩個子類clHiHand
和clLoHand
。 clCardsHeld
還包含兩種子類型中每一種的屬性和私有字段。還等什麼我結束了,這種繼承是,如:c#防止方法的繼承
public class clCardsHeld
{public clHiHand HiHand { Get {} Set {} }
}
public class clHiHand : clCardsHeld{}
clCardsHeld Hand3 = new clCardsHeld();
clHiHand hi = new clHiHand();
hi = Hand3.HiHand.HiHand.HiHand;
hi = Hand3.HiHand.LoHand.HiHand;
(如提示您通過智能感知)。 (HiHand
不應該有另一個HiHand
作爲其本身的財產,也不是一個低手,但CardsHeld
有HiHand
和LoHand
屬性,例如,您可以獲得7張卡片的遊戲,並且您可以使用5來製作最好的手和5爲最壞的可能,兩者同時播放,每個播放一半)
我將基類字段設置爲私有的,而不是受保護的,所以繼承的屬性仍然爲null
,如果我已經正確識別。但我真的希望該財產不被遺傳。試圖研究這一點,我發現一個屬性只能在覆蓋基本屬性時才能被封閉。而「隱藏」這個方法通常是指在孩子身上有不同的代碼。
的另一件事,而我扔了我的新手問題:
public class clCardsHeld { private List<clCards> _liCards; }
public class clHiHand : clCardsHeld
我可以找到當地人窗口clCardsHeld._liCards
,但我無法找到當地人窗口clCardsHeld.clHiCards._liCards
(但我可以得到它通過將其分配給一個變量。
感謝您的幫助。
看到這個重複的問題:HTTP://stackoverflow.com/questions/3772321/how-to-prevent-inheritance-for-some-methods – Adeel 2011-02-17 05:26:59
請提供一些示例源代碼。 – Raghu 2011-02-17 05:32:16
我至少試了兩次來閱讀這個,而我卻不能。我不知道你在問什麼。你能否把你的問題格式化得更好一些?更多的空格(考慮段落)和代碼格式會幫助*很多*。你所要做的就是將你的代碼行用4個空格表示,並且它們會自動顯示語法突出顯示和其他好東西。 – 2011-02-17 05:39:56