0

すべてのJavaメソッドはデフォルトで仮想ですが、Javaが多重継承をサポートしていないのはなぜですか? Javaでダイヤモンドの問題が発生するのはなぜですか?

4

4 に答える 4

5

James Gosling (Java の「父」として知られる) は次のように述べています。

JAVA は、C++ のほとんど使用されず、よく理解されていない、紛らわしい機能の多くを省略しています。これは主に、演算子のオーバーロード (メソッドのオーバーロードはありますが)、多重継承、および広範な自動強制で構成されます。

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

したがって、彼によると、彼らはそれが悪い考えだと思ったので、単に追加したくありませんでした.

PS 複数のインターフェースを使用することは、多重継承と同じではありません。

于 2013-10-25T09:20:29.600 に答える
2

多重継承の可能性がないという理由だけで、ダイヤモンドの問題が Java で発生することはありません。

于 2013-10-25T09:16:58.210 に答える
0

インターフェイスは具体的なクラスよりも柔軟性があり、単一のクラスを使用して複数のインターフェイスを実装するオプションがあるためです。これは、クラスを作成するために 2 つの設計図に準拠しているという合意によるものです。java のきれいな定義を見てみましょう:

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

Java は多重継承をサポートしていないため、 Diamond 問題が発生する可能性はありません。

于 2013-10-25T09:30:19.623 に答える
0

多重継承プログラミングに起因する開発エラーを制限し、複雑さを取り除くことは、太陽の恣意的な決定だと思います

于 2013-10-25T09:17:16.773 に答える