【问题标题】:How to define a child object based upon a parent object?如何根据父对象定义子对象?
【发布时间】:2013-03-21 17:03:32
【问题描述】:

这是一个普遍的问题。我可以将我的问题分为两个:

我有一个继承自 ParentClass 的 Class ChildClass。

  • ParentClass 有很多属性和方法。
  • ChildClass 有一些新方法和一些新属性。

1) 我想定义一个initFromParentClass 方法,其签名为

       - (id) initFromParentClass:(ParentClass)anObjectFromTheParentClass

这将基于anObjectFromTheParentClass 创建ChildClass 的新实例——也就是说,新实例的所有属性都是从“父实例”的属性中“复制”的。

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

谢谢

【问题讨论】:

    标签: objective-c oop parent-child


    【解决方案1】:

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

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

    如果 ParentClass 具有广泛且快速变化的 API,这可能会很乏味且难以维护。在这种情况下,您可能根本不想继承,而是从 ParentClass 和 ChildClass 中提取一个公共接口,并可能让 ChildClass 的实例观察初始化它们的对象的变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-15
      相关资源
      最近更新 更多