可能重复:
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不允许)?
当然,从多个类继承的重点是继承它们的功能 - 如果必须手动重新插入功能(对于扩展一组接口的每个类),使用接口的重点是什么?无法保证实现相同接口集的两个类将提供相同的功能 - 或者我错过了什么?
答案 0 :(得分:1)
多重继承可能会导致多个问题。
接口用于为实现它们的类的实例提供功能。我个人使用带有组合的接口(使用对其他对象的引用的实例变量),以便为我的类提供功能,否则将通过多重继承来实现。
换句话说,我的类提供了实现的接口所承诺的功能,但在内部我的类实例使用实例变量来完成工作。
“无法保证两个班级 实现同一套 接口将提供相同的 功能 - 或者我错过了 东西吗?“
关于您的陈述:
每个方法都应该遵守一个契约,所以无论你如何实现它,如果这是应该做的,方法的功能应该总是相同的。如果它违反了合同,则意味着它被错误地实施了。
答案 1 :(得分:0)
多重继承可能导致循环继承..以避免我们要进行基于接口的继承..
答案 2 :(得分:0)
您应该阅读有关钻石依赖性问题http://en.wikipedia.org/wiki/Diamond_problem并避免此Java选择接口而不是多个类的扩展