As Java 9では、private
とprivate static
インターフェイスのメソッドも、interface
とclass
の残りの違いは何でしょうか?また、Javaは多重継承にゆっくりと移行していますか?
Java 9のプライベートインターフェイスメソッドは、他のプライベートメソッドとまったく同じように動作します。これらは、抽象クラスであっても本体を持つ必要があり、サブクラスによって呼び出されたり、オーバーライドされません。どの(特に多重継承)と言えば、(少なくとも?)次の3種類があります。
String
は、Object
です。 Javaは、インターフェースを介して)初日から複数の型の継承を許可しました。プライベートインターフェイスメソッドを見るとわかるように、ここには何も追加しません。
インターフェースとクラスをどのように比較するかという質問に関して、主な違いは2つあります。多重継承と状態です。インターフェイスは前者をサポートし、クラスは後者を持つことができます。状態は典型的なOOPでは一種重要なので、クラスは関連したままです。 ????
インターフェースが特定の非パブリックフィールドまたはストレートアウト自体を定義するように実装を強制する方法がある場合、ゲームは変わり、インターフェースはクラスと競合する可能性があります。
プライベートメソッドはサブクラスに継承されないため、この機能は実装クラスに影響しません。インターフェイスのプライベートメソッドを使用すると、既定のメソッド間でコードを共有できると思います。
Javaインターフェースには、非静的メンバーを含めることはできません。これは大きな違いであり、多重継承IMOではありません。
Java 9インターフェースには、フィールドとコンストラクターを含めることができません。これにより、クラスとインターフェースに大きな違いが生じるため、Java 9は多重継承にはほど遠い。
バージョン9のJavaインターフェイスにはプライベートメソッドがありますが、静的プライベートです。この機能は、モジュラー方式を可能にするために導入されました。 1つの関数は、長いデフォルトメソッドを使用する代わりに1つの責任で動作する必要があります。複数の継承とは関係ありません。 プライベートメソッドが多くなるほど、クリーンで再利用可能なコードを記述できるようになります。とにかく、パブリックメソッドまたはプロテクトメソッドに関係なく、スタティックメソッドはオーバーライドできません。