これで、Java 8 がインターフェイスにデフォルト メソッドと静的メソッドを導入したことがわかりました。インターフェースはもともと Java で導入され、多重継承で C++ で発生し たひし形の問題
を回避しました。
しかし、Java 8 でインターフェースにデフォルト メソッドが導入されたことに加えて、Java は、以前のバージョンでは回避されていたダイヤモンドの問題も導入しました。
デフォルトのメソッドは、強制的にオーバーライドする必要はありません。
ただし、インターフェイスを使用してひし形の問題が発生した場合、それらのインターフェイスを実装するクラスは、既定のメソッドをオーバーライドする 必要があります。
だから今、私は3つの質問を心に留めています:
- なぜデフォルトのメソッドが必要なのですか?
- インターフェイスにデフォルトのメソッドを持つ代わりに、クラス自体を介して複数の継承を行うことはできませんか?
- とにかくJava 8でそれを導入しなければならなかった場合、以前のバージョンでダイヤモンドの問題を回避する必要は何でしたか?
良い説明や説明へのリンクはありますか?
PS私は、これに関する良い記事を含むリンクをインターネット上で見つけられませんでした.
彼らが言ったのは、抽象クラスがより具体性を与えるということだけです。
同様に、抽象クラスはコンストラクターを持つことができますが、インターフェイスはできません。
繰り返しになりますが、抽象クラスがより具体的であり、コンストラクターを持つことができ、
Java がひし形の問題を導入した場合、なぜ今インターフェースを持たなければならないのでしょうか? 抽象クラスは、多重継承のスタンドアロンとして十分ではないでしょうか?