我是Objective-C的新手,我想知道它是否正确: 我有一个班级
@interface BaseClass : NSObject
然后我创建了该类的对象:
BaseClass *baseClassObject = [[BaseClass alloc] initWith...];
之后我又上了一堂课:
@interface AdvancedClass : BaseClass
取决于我在BaseClass(对象初始化器,后面的方法)中获得的数据,我可能想要扩展对象的功能。所以我想baseClassObject成为AdvancedClass类的对象。
1)这是对的吗? 2)这可能是“促进”这样的对象吗?
答案 0 :(得分:1)
这是可能的和正确的 - 这称为多态,它是面向对象编程的主要原则之一。您只需根据所需的功能类型在方法中创建基类或子类的实例。
答案 1 :(得分:1)
不,如果您有BaseClass
的实例,则不能将其视为AdvanceClass
的实例,也不能神奇地推广'它是AdvancedClass
的一个实例。但是,您可以做的是使用AdvanceClass
的实例作为初始化程序创建新的BaseClass
。
例如:
BaseClass* baseInstance = [[BaseClass alloc] init];
...
AdvancedClass* advancedInstance = [[AdvancedClass alloc] initWithBaseClass:baseInstance];
答案 2 :(得分:0)
创建一个类是另一个类的子类是完全可以接受的。 或者,您可能希望使用类别: