Java:为什么有多个接口而不是多重继承?

时间:2011-02-04 11:21:44

标签: java abstract-class multiple-inheritance

  

可能重复:
  Why does Java allow multiple inheritance from interfaces but not from abstract/concrete classes
  Why there is no multiple inheritance in Java, but implementing multiple interfaces is allowed

我们为什么要告诉实现多个接口而不是从多个类继承(Java不允许)?

当然,从多个类继承的重点是继承它们的功能 - 如果必须手动重新插入功能(对于扩展一组接口的每个类),使用接口的重点是什么?无法保证实现相同接口集的两个类将提供相同的功能 - 或者我错过了什么?

3 个答案:

答案 0 :(得分:1)

多重继承可能会导致多个问题。

接口用于为实现它们的类的实例提供功能。我个人使用带有组合的接口(使用对其他对象的引用的实例变量),以便为我的类提供功能,否则将通过多重继承来实现。

换句话说,我的类提供了实现的接口所承诺的功能,但在内部我的类实例使用实例变量来完成工作。

  

“无法保证两个班级   实现同一套   接口将提供相同的   功能 - 或者我错过了   东西吗?“

关于您的陈述:

每个方法都应该遵守一个契约,所以无论你如何实现它,如果这是应该做的,方法的功能应该总是相同的。如果它违反了合同,则意味着它被错误地实施了。

答案 1 :(得分:0)

多重继承可能导致循环继承..以避免我们要进行基于接口的继承..

答案 2 :(得分:0)

您应该阅读有关钻石依赖性问题http://en.wikipedia.org/wiki/Diamond_problem并避免此Java选择接口而不是多个类的扩展