使用する場合: Java 8+ インターフェースのデフォルトメソッドと抽象メソッドの比較 質問する

使用する場合: Java 8+ インターフェースのデフォルトメソッドと抽象メソッドの比較 質問する

Java 8では、インターフェース内のメソッドのデフォルト実装が可能になり、デフォルトメソッド

どのような場合interface default methodに、 の代わりにのような を使うのか、よくわかりません。abstract classabstract method(s)

では、デフォルト メソッドを持つインターフェースはいつ使用すべきで、抽象クラス (抽象メソッドを持つ) はいつ使用すべきでしょうか? このようなシナリオでも抽象クラスは役立ちますか?

ベストアンサー1

抽象クラスには、デフォルトのメソッド実装 (プライベート状態など) 以外にも多くの機能がありますが、Java 8 では、どちらかを選択できる場合は、defaultインターフェースで defender (別名 ) メソッドを使用する必要があります。

デフォルト メソッドの制約は、特定の実装の状態を参照せずに、他のインターフェイス メソッドの呼び出しという観点でのみ実装できることです。そのため、主な使用例は、より高レベルの便利なメソッドです。

この新機能の優れた点は、以前は便利なメソッドに抽象クラスを使用する必要があり、実装者が単一継承に制限されていたのに対し、今ではインターフェースのみで非常にクリーンな設計が可能になり、プログラマーに課せられる実装作業が最小限に抑えられることです。

Java 8 にメソッドを導入する当初の動機は、default既存の実装を壊すことなく、Collections Framework インターフェースをラムダ指向のメソッドで拡張したいという願望でした。これはパブリック ライブラリの作成者にとってより関連がありますが、同じ機能がプロジェクトでも役立つかもしれません。新しい利便性を追加できる集中化された場所が 1 つあり、型階層の残りの部分の外観に依存する必要はありません。

おすすめ記事