首页 > 图灵资讯 > 技术篇>正文

面向对象设计中,多继承为何不受欢迎?菱形问题与接口的优势是什么?

2024-12-02 19:30:37

面向对象设计中,多继承为何不受欢迎?菱形问题与接口的优势是什么?

在面向对象设计中,多继承为何不受欢迎?

在面向对象编程中,子类通常有多个父类的情况。然而,多重继承却不受编程行业的普遍欢迎,取而代之的则是使用继承类和实现接口的做法。

问题1:多重继承的局限

多重继承的一个主要问题是“菱形问题”。当子类继承自两个有共同祖先的父类时,子类将不知道祖先方法的调用路径。例如:

class A {
  void method() { ... }
}

class B extends A {
  void method() { ... }
}

class C extends A {
  void method() { ... }
}

class D extends B, C {
  // 谁的method()被调用?
}

问题2:继承吃素能力

要使bird继承吃素功能,我们可以采取两种方法:

  1. 让animal继承vegetarian:使其成为animal类的副功能。
  2. 将vegetarian做成接口:bird类可以实现vegetarian接口,通过实现eat()方法来继承吃素能力。

推荐使用第二种方法,因为它更灵活,并且不会污染animal类的接口。

以上就是面向对象设计中,多继承为何不受欢迎?菱形问题与接口的优势是什么?的详细内容,更多请关注图灵教育其它相关文章!

上一篇 若依框架中这段日志AOP代码如何理解?
下一篇 返回列表

文章素材均来源于网络,如有侵权,请联系管理员删除。