是否有可能处理具有不同实例变量类型的类?比方说,我有一个具有两个int实例变量的一类,我们姑且称之为:类的多个实例变量类型?
@interface ClassA: NSObject {
int x;
int y;
}
@end
同时我想扩展它给它的可能性来处理这样的实例变量,不同类型,像这样:
@interface ClassB: ClassA {
double x;
double y;
}
这甚至有可能吗?
是否有可能处理具有不同实例变量类型的类?比方说,我有一个具有两个int实例变量的一类,我们姑且称之为:类的多个实例变量类型?
@interface ClassA: NSObject {
int x;
int y;
}
@end
同时我想扩展它给它的可能性来处理这样的实例变量,不同类型,像这样:
@interface ClassB: ClassA {
double x;
double y;
}
这甚至有可能吗?
我敢肯定你不能这样做,有两个原因:
int x, double x
)。如果您不想为这些用例创建单独的类,那么抽象超类可能会起作用。如果我更多地了解你想要解决的问题,我可以在这方面多一点帮助。
看起来你真的想要的是参数多态,Objective-C不支持。某些Cocoa类,如NSNumber
系列,使用具有许多具体子类的抽象超类,可能具有不同的实例变量布局(就像你在问题中描述的那样)。然后,在抽象和具体之间适当地划分逻辑。这是Cocoa的类集群设计模式,这是对C++和Haskell等语言的参数多态性的一种弱化的临时答案。
不会。您会收到“重复成员x”和“重复成员y”的编译时警告。
你试过了吗? – 2010-12-03 05:17:21
你为什么不给一个id数据类型给x和y? – 2010-12-03 05:19:02