2012-08-16 45 views
0

如果ClassBClassA的子類,如果ClassB's ivars之一是來自ClassA的實例,它會好嗎?對不起,如果這是一個愚蠢的問題。我只是覺得它如何從ClassA繼承ClassB,但它可以擁有它的一個實例。一個類的伊娃可以作爲它的超類的一個實例嗎?

+2

考慮到每個對象都有NSObject作爲超類。 – 2012-08-16 21:06:28

回答

1

是的,那很好。基本上,您可以在任何課程中使用任何類型的ivars。

+1

在某些語言中,如果您嘗試使A的*子類成爲A的成員,它可能會變得有點棘手。關於Objective-C的無關 - 無需嘗試。 – 2012-08-16 21:08:35

+0

@HotLicks是的,但我們不是說其他​​語言,只有Obj-C。如果你使用'@ SomeSubclass'正向聲明子類,那麼它必須是完全有效的(儘管如此,仍然不是很好的做法)。 – 2012-08-16 21:18:56

+0

是的,我期望它能夠在Obj-C中工作,因爲它是duck-typed,並且不會嘗試維護類繼承映射。從未嘗試過。 (即使它不能正常工作,你也可以用超類指針來僞造它 - 幾乎任何語言都是如此。) – 2012-08-16 21:36:41

1

這完全沒問題。一個班級甚至可以擁有自己的類型的ivar。

比方說,你有一個班級的旅行車,並想模擬一列火車。你的旅行車班可能會有2輛旅行車。一個指向列車中的下一個貨車,另一個指向前一個貨車。

然後,您可以實現Wagon的PassengerWagon子類,它會從它的超類繼承Wagon ivars。要清楚:如果您只想跟蹤PassengerWagon實例的鄰居,但您可以僅在PassengerWagon中定義ivars(類型Wagon),而不是超類,但這些鄰居可以是任何Wagon類型。

相關問題