了解何时使用继承以允许一个类使用另一个类的实例

时间:2012-04-30 15:33:20

标签: objective-c oop inheritance composition

在创建类时,是否存在何时使用继承以及何时将没有继承的新类导入另一个类的规则?

以下是一个例子:

我创建了一个名为Person的类,然后创建了许多Person个对象。

然后我创建一个名为House的子类。使用继承和属性,我的所有Person对象现在都可以拥有House

然后我创建了一个名为Car的子类,因此我的Person个对象现在都有House个和Car个。

依此类推......等等......

我现在有这个类序列:

NSObject<人<房子<汽车<新类<另一个新的等等。

通过上面的场景,我的逻辑(我是一个Objective-C初学者)告诉我,我有两种不同的方法来产生相同的结果:

  1. 如上所述,或
  2. 创建没有继承的每个类,然后将其作为ivar导入Person - 例如,House的实例现在变为类型,然后导入Person使用属性的对象。
  3. 请原谅我缺乏术语和理解。如果需要,我可以上传代码示例,但更多的是关于何时何地不使用继承的一般性问题。

1 个答案:

答案 0 :(得分:4)

这个问题并非特定于Objective-C:何时使用继承的指南对于所有面向对象的语言都是相同的,它基于可替代性,由{{3 }}:

  

如果S是T的子类型,则类型T的对象可以用S

类型的对象替换

换句话说,只有当你可以说“{derived} {base}>”时才使用继承;当您为“{owner} 建立 {something}”进行建模时,请使用合成

  • 学生人 - 继承
  • Car 车辆 - 继承
  • 众议院 - 作曲(ivar或财产)
  • Car 有一个(n)引擎 - 组合(ivar或属性)