Objective c 如何基于父对象定义子对象?

Objective c 如何基于父对象定义子对象?,objective-c,oop,parent-child,Objective C,Oop,Parent Child,这是一个一般性问题。我可以把我的问题分为两部分: 我有一个孩子班,她来自家长班 ParentClass有许多属性和方法 ChildClass有一些新方法和一些新属性 1) 我想定义一个initFromParentClass方法,其签名为 - (id) initFromParentClass:(ParentClass)anObjectFromTheParentClass 这将基于ParentClass中的对象创建一个新的子类实例——也就是说,新实例的所有属性都是从“父实例”的属

这是一个一般性问题。我可以把我的问题分为两部分:

我有一个孩子班,她来自家长班

  • ParentClass有许多属性和方法
  • ChildClass有一些新方法和一些新属性
1) 我想定义一个
initFromParentClass
方法,其签名为

       - (id) initFromParentClass:(ParentClass)anObjectFromTheParentClass
这将基于ParentClass中的对象创建一个新的
子类实例
——也就是说,新实例的所有属性都是从“父实例”的属性“复制”的

2) 这两个父/子对象可以动态链接吗?如果父母改变了,孩子也会改变


谢谢

一个熟悉的习惯用法是让子类将现有方法委托给父类的实例:

 @implementation ChildClass
 @property (nonatomic, strong) ParentClass *obj;
 - (void) mill
 {
      [obj mill];
 }

 - (NSInteger) count
 {
       return [obj count];
 }
如果ParentClass有一个广泛且快速变化的API,那么这可能会很乏味并且很难维护。在这种情况下,您可能根本不希望继承,而是希望从ParentClass和ChildClass中提取一个公共接口,并可能让ChildClass的实例观察对初始化它们的对象所做的更改