3

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

这是一个例子:

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

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

然后我创建了一个名为的子类Car,所以我的所有Person对象现在都有Houses 和Cars。

等等等等…。

我现在有这个类序列:

NSObject < Person < House < Car < new Class < another new Class 等等。

对于上述场景,我的逻辑(我是 Objective-C 初学者)告诉我,我有两种不同的方式来产生相同的结果:

  1. 如上所述,或
  2. 创建没有继承的每个类,然后将其Person作为 ivar 导入 - 例如, now 的实例成为类型,然后使用属性House将其导入对象。Person

请原谅我缺乏术语和理解。如果需要,我可以上传一个代码示例,但它更多的是关于何时以及何时不使用继承的一般问题。

4

1 回答 1

4

这个问题并不特定于 Objective-C:关于何时使用继承的指南对于所有面向对象的语言都是相同的,并且它基于可替换性,由Liskov 替换原则总结:

如果 S 是 T 的子类型,则 T 类型的对象可以替换为 S 类型的对象

换句话说,只有当你可以说“{derived} is a {base}>”时才使用继承;当你为“{owner} has a {something}”建模时,使用组合

  • 学生是一个人——继承
  • 车——传承
  • 房子——构成(ivar或财产)
  • 汽车有一个(n)引擎——组成(ivar或属性)
于 2012-04-30T15:40:50.357 回答