2013-11-21 67 views
-1

我想知道是否有某種方法來聲明一個變量是一個基類的成員數據,以便它不是從派生類繼承。我在我的基類中有一些成員數據,它們不應該是派生類的對象的一部分,所以我想分離什麼應該從什麼不應該繼承。有沒有辦法做到這一點?派生類和保護基類的成員數據

+2

私有字段/方法/屬性不容易被派生類使用。會有幫助嗎?也看到這裏http://stackoverflow.com/questions/2950820/are-private-members-inherited-in-c – Ric

+0

@Ric但他們仍然住在對象內。您可以通過封裝(如果提供或通過反射)來訪問它 –

+0

請參閱最高回答中留下的評論:如果嘗試使用derivedType.GetField(「f」,BindingFlags.Instance | BindingFlags.NonPublic ),即使這在技術上應該返回所有繼承的成員,也不會得到任何回報。 – Ric

回答

0

如果您試圖從衍生/繼承類隱藏數據,請使用private訪問修飾符。 是的,即使它們是遺傳的,除非它們被標記爲protectedpublic,否則您將無法訪問它們。

+0

我在尋找更多的方法來防止派生類繼承數據。如果可能的話,我想這樣做以減小它們的大小。 –

+0

不確定這是可能的。如果是這種情況,最好試試其他的東西。 – Ric

+0

你有沒有設法解決你的問題? – Ric

0

Ric,是的。我認爲這只是C++中的一個功能而已。我真正想做的是創建一個基類,其中的成員數據帶有某種前綴,以防止數據被子類繼承。例如:noinherit void func1();或noinherit double x; noinherit只是我定義的一些關鍵字,用於定義不應由子類繼承的數據。從某種意義上說,我希望能夠確定孩子從父母遺傳下來的基因,而不是僅僅獲得父母基因全部集合的孩子,並且僅僅基於哪些基因是私人的而具有某種表型,是公共的還是受保護的,以使用遺傳學比喻。

相關問題