しかし、どのようにしてObjectと他のクラスから同時に継承することができますか?それは多重継承ではありません。
いいえ、これは何が起こるかではありません。すべてのクラスがクラスから直接拡張されるわけではありませんObject
。ただし、継承階層の最上位にあるクラスのみがObject
class(暗黙的に)から拡張されます。階層の下位にある残りのクラスは、Object
クラスからスーパークラスまで拡張されます。そして、これは私たちがマルチレベル継承と呼んでいるものです。
したがって、以下の階層を検討してください。
class A { }
class B extends A { }
上記の場合、class A
はと同等class A extends Object
です。
次に、11個のObjectメソッドすべてを継承するために何をする必要がありますか?なぜI/Oで必要なのか想像もつきませんでした
あなたが継承と言うとき、あなたはオーバーライドを意味したのではないかと思います。クラスのメソッドをオーバーライドする必要はありません。メソッドをオーバーライドするかどうかは、要件に応じて決まります。例:-インスタンスのカスタム等価性テストを作成するために、メソッドをオーバーライドすることがよくあります。その場合、とのコントラクトを維持するために、メソッドもオーバーライドする必要があります。Object
equals()
hashCode()
equals()
hashCode()
最後に、JDK 8は、インターフェイスでのデフォルトのメソッド実現を提供します。これにより、Javaで多重継承が発生する可能性があります。
インターフェイスAがデフォルトの実現を備えたメソッドa()を提供し、インターフェイスBが別のデフォルトの実現を備えたa()メソッドも提供し、カスタムクラスCが両方のインターフェイスを実装し、デフォルトの実現に依存している場合はどうなりますか?それはDiamond of Deathではないでしょうか?
このことについてはまだ読んでいないので、この概念についてコメントすることはできません。おそらく、後で答えを更新するでしょう。