gpt4 book ai didi

oop - 与面向对象设计相关的组合是什么?

转载 作者:行者123 更新时间:2023-12-03 05:33:23 26 4
gpt4 key购买 nike

我听到(并在这个网站上读到)很多关于“优先组合胜过继承”的内容。

但是什么是组合?我从 Person : Mammal : Animal 的角度理解继承,但我在任何地方都看不到 Compostion 的定义..有人可以补充我吗?

最佳答案

组合是指将简单类型组合成更复杂的类型。在您的示例中,组合可以是:

Animal:
Skin animalSkin
Organs animalOrgans


Mammal::Animal:
Hair/fur mammalFur
warm-blooded-based_cirulation_system heartAndStuff

Person::Mammal:
string firstName
string lastName

如果你想完全组合(并摆脱所有继承),它看起来像这样:

Animal:
Skin animalSkin
Organs animalOrgans

Mammal:
private Animal _animalRef
Hair/fur mammalFur
warm-blooded-based_cirulation_system heartAndStuff

Person:
private Mammal _mammalRef
string firstName
string lastName

这种方法的优点是类型 MammalPerson 不必符合其先前父代的接口(interface)。这可能是一件好事,因为有时对父类(super class)的更改可能会对子类产生严重影响。他们仍然可以通过这些类的私有(private)实例来访问这些类的属性和行为,如果他们想公开这些前父类(super class)的行为,他们可以简单地将它们包装在公共(public)方法中。

我在这里找到了一个很好的链接,里面有很好的例子:http://www.artima.com/designtechniques/compoinh.html

关于oop - 与面向对象设计相关的组合是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3441090/

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