何时使用组合以及何时使用继承

时间:2019-05-30 19:13:22

标签: java oop inheritance composition

有没有一种方法可以告诉何时在代码中使用合成以及何时使用继承。

示例:假设我们有4个类,分别为ComputerMotherBoardMonitorKeyboard。我可以使computer从其他三个类继承,也可以在MotherBoard的字段中声明MonitorKeyboardcomputer,因此第二个案例使用组成。哪种方法更好?大多数开发人员首选哪种方式?

1 个答案:

答案 0 :(得分:1)

following情况下,我更喜欢继承:

  • 两个类都在相同的逻辑域中
  • 子类是超类的适当子类型
  • 超类的实现对于子类是必需的或适当的
  • 子类所做的增强主要是加性的。

否则,该组合物是合适的。

请注意,在这种情况下,计算机是由列出的组件组成的。作为捷径,我有时会问自己以下问题:

  • Computer 一个Mouse吗?如果是这样,则使用合成。请注意,计算机上没有鼠标。
  • MacBookComputer吗?如果是这样,则使用继承。
  

...但是通常首选哪种方式

通常,应根据情况做出决定:)