2016-05-12 83 views
0

假設我有一個叫Bot類,像這樣:如何僅在特定類型的情況下繼承類?

class Bot 
{ 

} 

現在還有另外一個類有Bot的所有功能,這類被稱爲Tool

class Tool 
{ 
    //some method 
} 

現在Bot是唯一必須繼承Tool方法的類。我如何限制這個像where運營商?事情是這樣的:

class Tool where T = Bot ? 

我不知道,如果是明確的,但我想,只有Bot類可以繼承的Tool的方法,是可以做到這一點?遺憾的是,這個原始的解釋。

在此先感謝。

+1

目前尚不清楚你的意思。你的意思是說只希望Tool類能夠從Bot類繼承而沒有其他類?如果是這樣,你不能這樣做。 –

+0

您是否試圖構建一個只允許特定其他類繼承的類,而其他類可以使用它? –

+0

@MattiasÅslund準確地說,我正在學習'where'運算符,所以我想知道這樣的目標是否可能。 – IlDrugo

回答

6

這是不可能的,甚至是無用的。

如果你只想讓一個類繼承另一個類,爲什麼不把它們合併成一個類呢?你也可以創建一個只能由父類創建的嵌套類。然後,將Tool作爲屬性添加,而不是派生類。

+0

有趣的提示,但在這種情況下,代碼文件將太長,或者我可以分開更多的文件? – IlDrugo

+1

是的,使用'partial'關鍵字。 (閱讀[部分類](https://msdn.microsoft.com/en-us/library/wa80x488.aspx?f=255&MSPPError=-2147217396)) –

+0

明白了,謝謝你:) – IlDrugo

1

你不能這樣做。這聽起來像你想使Tool密封,所以沒有任何東西可以繼承,但給一個Bot一個「有-α」的關係(而不是一個「是-α」關係)

換句話說,一個機器人應該有一個工具封裝在它的實例,而不是從它繼承。