gpt4 book ai didi

objective-c - 了解何时使用继承来允许一个类使用另一个类的实例

转载 作者:搜寻专家 更新时间:2023-10-30 20:06:36 25 4
gpt4 key购买 nike

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

举个例子:

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

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

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

等等……等等……

我现在有这个类序列:

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

在上述情况下,我的逻辑(我是 Objective-C 初学者)告诉我有两种不同的方法可以产生相同的结果:

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

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

最佳答案

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

if S is a subtype of T, then objects of type T may be replaced with objects of type S

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

  • 学生是一个人——继承
  • 汽车交通工具 -- 继承
  • 房子——组合(ivar 或属性(property))
  • 汽车有一个引擎——组合(ivar 或属性)

关于objective-c - 了解何时使用继承来允许一个类使用另一个类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10386311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com