2011-04-10 76 views
2

我這是在我的代碼廣泛使用的基類,但是當我繼承它的基類方法被調用下面的示例代碼:Objective C - 覆蓋基類的方法 - 如何調用子類的方法?

SubClass *foo; 
[array addObject:foo]; 

for (BaseClass *bc in array) { 
    [bc foo]; 
} 

有沒有辦法讓子類的foo的方法稱爲不改變for循環?我可以做點什麼嗎?

foo { 
    if (what_class_am_i_really != BaseClass) [what_class_am_i_really foo]; 
} 

回答

4

Objective-C會自動調用子類的實現。

如果在你的情況下不這樣做,你的代碼中有一個bug,你需要顯示這些方法。

+0

我已經添加了子類添加到數組。記錄對象的類將顯示循環中的基類。 – Mark 2011-04-10 19:18:17

+0

alloc不是子類:) – Mark 2011-04-10 19:20:45

2

子類的方法被自動調用。這是多態。將其轉換爲超類不會調用超類方法。