扩展单个对象功能

时间:2012-06-19 15:21:00

标签: objective-c ios

我是Objective-C的新手,我想知道它是否正确: 我有一个班级

@interface BaseClass : NSObject

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

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

之后我又上了一堂课:

@interface AdvancedClass : BaseClass

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

1)这是对的吗? 2)这可能是“促进”这样的对象吗?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

不,如果您有BaseClass的实例,则不能将其视为AdvanceClass的实例,也不能神奇地推广'它是AdvancedClass的一个实例。但是,您可以做的是使用AdvanceClass的实例作为初始化程序创建新的BaseClass

例如:

BaseClass* baseInstance = [[BaseClass alloc] init];
...
AdvancedClass* advancedInstance = [[AdvancedClass alloc] initWithBaseClass:baseInstance];

答案 2 :(得分:0)

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

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

相关问题