为什么java不支持多重继承,尽管默认情况下所有java方法都是虚拟的?

时间:2013-10-25 09:14:20

标签: java diamond-problem

为什么Java不支持多重继承,尽管默认情况下所有java方法都是虚拟的?为什么Java会出现钻石问题?

4 个答案:

答案 0 :(得分:5)

James Gosling(被称为Java的“父亲”)说:

  

JAVA省略了许多很少使用,很难理解,令人困惑的C ++特性   经验带来更多的悲伤而不是有益。这主要包括运算符重载   (虽然它确实有方法重载),多重继承,并且广泛自动化   强制转换。

参考:http://javapapers.com/core-java/why-multiple-inheritance-is-not-supported-in-java/

所以根据他的说法,他们根本不想添加它,因为他们认为这是一个坏主意。

P.S。使用多个接口与多重继承不同。

答案 1 :(得分:2)

钻石问题不能出现在Java中,因为它不可能存在多重继承。

答案 2 :(得分:0)

我认为太阳的任意决定是限制多重继承编程导致的开发错误和复杂性

答案 3 :(得分:0)

因为Interface比具体类提供灵活性,并且我们可以选择使用单个类实现多个接口。这是通过协议我们正在坚持创建一个类的两个蓝图。让我们看看java的漂亮定义:

JAVA: A simple, object oriented, distributed, interpreted, robust, secure, 
architecture   neutral, portable, high performance, multithreaded, 
dynamic language.

同样,java中不存在 Diamond问题的可能性,因为它不支持多重继承。