所以在Objective-C中,我有一個PlayingCardDeck類(它包含一個PlayingCards數組,它是Cards的一個子類),它有一個drawRandom方法(從Deck類繼承),它從該數組中返回一個隨機Card對象。當它被分配給超類型變量時,如何訪問子類方法?
我將此drawRandom方法的結果分配給Card * hello,因爲卡對象被返回,所以我無法將結果分配給PlayingCard * hello。
如果我想訪問我在PlayingCards中實現的一些方法,我該怎麼做?我被迫分配給卡,所以我不能訪問任何的PlayCard方法。
我應該重新實現PlayingCardDeck中的drawRandom方法,以便它返回一個PlayingCard嗎?
或者還有其他方法可以做到這一點嗎? (因爲重新實現我所有的超類方法似乎是一種浪費......如果我這樣做了,子類化的意義何在?)
我是否簡單地錯過了某些東西?
因此,如果我有不同的方法調用可能會導致結果,那麼應該完成上面概述的檢查類和後續的類型對象方法調用?例如,有兩個子類Yugioh卡和Magic卡可能需要調用[Card trapActivate]和[Card search]方法。另外一個你提到的子類化的情況是Yugioh卡和Magic卡都會調用一個通用的方法[Card activate],其中兩個子類有不同的實現。我是否正確理解這一點? – user2503088
是的,你明白了。 – gaige
啊啊,謝謝! – user2503088