2012-11-26 100 views
2

我目前有一個已經擁有超類的類。我意識到我也想從不同的現有類中調用方法,但沒有將它定義爲超類。是否有可能將第二個超類分配給我現有的子類,或者這是不可能的。是否有可能創建一個在Objective-C中有兩個超類的類?

如果可能的話,我該怎麼去做。如果這是不可能的,什麼是解決方法?

回答

1

Objective C不支持多重繼承,但您可以通過使用接口來實現此功能。

3

這是不可能的。 Objective-C是單一繼承。

根據您的情況,組成可能是正確的方式來解決這個問題:假設你有類Foo,並且還希望美孚的情況下,以繼承類欄行爲。

您可以將Bar的一個實例作爲Foo中的一個實例變量並委託給它進行方法調用。由於Objective-C是動態類型的,因此您可以簡單地將您的Foo實例作爲Bar實例,並將其傳遞給期望Bar的任何代碼。只要Foo響應Bar提供的所有相同方法,就不會有人知道其中的差別。

如果你想變得很花哨(或者如果Bar有太多的方法,並且你不想寫出每個方法),你可以使用消息轉發將你的Foo類不識別的消息傳遞給酒吧實例。查閱關於forwardInvocation:的文檔,看看它是如何工作的。

相關問題