2010-12-03 101 views
0

是否有可能處理具有不同實例變量類型的類?比方說,我有一個具有兩個int實例變量的一類,我們姑且稱之爲:類的多個實例變量類型?

@interface ClassA: NSObject { 
    int x; 
    int y; 
} 
@end 

同時我想擴展它給它的可能性來處理這樣的實例變量,不同類型,像這樣:

@interface ClassB: ClassA { 
    double x; 
    double y; 
} 

這甚至有可能嗎?

+0

你試過了嗎? – 2010-12-03 05:17:21

+0

你爲什麼不給一個id數據類型給x和y? – 2010-12-03 05:19:02

回答

1

我敢肯定你不能這樣做,有兩個原因:

  1. 您不能重複實例變量(int x, double x)。
  2. 從一個類繼承是非常粗略的,但然後想要改變它的實例變量的類型。

如果您不想爲這些用例創建單獨的類,那麼抽象超類可能會起作用。如果我更多地瞭解你想要解決的問題,我可以在這方面多一點幫助。

看起來你真的想要的是參數多態,Objective-C不支持。某些Cocoa類,如NSNumber系列,使用具有許多具體子類的抽象超類,可能具有不同的實例變量佈局(就像你在問題中描述的那樣)。然後,在抽象和具體之間適當地劃分邏輯。這是Cocoa的類集羣設計模式,這是對C++和Haskell等語言的參數多態性的一種弱化的臨時答案。

1

不會。您會收到「重複成員x」和「重複成員y」的編譯時警告。