問題:
Java が複数のクラスを拡張することを許可していないことはわかっています。これは、コンパイラがどのスーパークラス メソッドを使用するかを決定できなくなるダイヤモンド問題が発生するためです。インターフェイスのデフォルト メソッドでは、ダイヤモンド問題がJava 8で導入されました。つまり、クラスが 2 つのインターフェイスを実装し、それぞれが同じ既定のメソッドを定義し、実装するクラスが共通の既定のメソッドをオーバーライドしない場合、コンパイラはどちらの実装を選択するかを決定できなかったからです。
解決:
Java 8では、複数のインターフェースによって実装されるデフォルト メソッドの実装を提供する必要があります。したがって、クラスが上記の両方のインターフェースを実装する場合、共通のデフォルト メソッドの実装を提供する必要があります。そうしないと、コンパイラはコンパイル時エラーをスローします。
質問:
子クラスによって導入された共通メソッドをオーバーライドすることにより、このソリューションが複数クラスの継承に適用されないのはなぜですか?