0

我是 Objective-C 的新手,我想知道它是否正确:我有一堂课

@interface BaseClass : NSObject

然后我创建了该类的对象:

BaseClass *baseClassObject = [[BaseClass alloc] initWith...];

之后我有另一堂课:

@interface AdvancedClass : BaseClass

取决于我在 BaseClass 中获得的数据(对象初始化器,稍后的方法)我可能想要扩展对象的功能。所以我想 baseClassObject 成为 AdvancedClass 类的对象。

1)这是正确的吗?2)这有可能像那样“提升”对象吗?

4

3 回答 3

1

这是可能的并且是正确的——这就是所谓的多态性,它是面向对象编程的主要原则之一。您只需根据需要的功能类型在方法中创建基类或子类的实例。

于 2012-06-19T15:33:55.207 回答
1

不,如果你有一个实例,BaseClass你不能把它当作一个实例,你AdvanceClass也不能神奇地将它“提升”为AdvancedClass. 但是,您可以AdvanceClass做的是使用实例BaseClass作为初始化程序创建一个新的。

例如:

BaseClass* baseInstance = [[BaseClass alloc] init];
...
AdvancedClass* advancedInstance = [[AdvancedClass alloc] initWithBaseClass:baseInstance];
于 2012-06-19T19:01:08.650 回答
0

创建一个作为另一个类的子类的类是完全可以接受的。或者,您可能想要使用类别:

http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/chapters/occategories.html

于 2012-06-19T15:29:37.470 回答