Java8のデフォルトと静的インターフェース方式の違い。
OracleのJavadocによると-
デフォルトのメソッドを使用すると、ライブラリのインターフェースに新しい機能を追加し、それらのインターフェースの古いバージョン用に記述されたコードとのバイナリ互換性を確保できます。
静的メソッドは、オブジェクトではなく、それが定義されているクラスに関連付けられているメソッドです。クラスのすべてのインスタンスは、静的メソッドを共有します。
インターフェイスの静的メソッドはインターフェイスクラスの一部であり、実装またはオーバーライドすることはできませんが、クラスはデフォルトのメソッドをオーバーライドできます。
| Sr。いいえ。 | キー | 静的インターフェースメソッド | デフォルトの方法 |
|---|---|---|---|
| 1 | 基本 | これは、インターフェースのみに属する静的メソッドです。このメソッドの実装をインターフェース自体に記述できます | これはデフォルトのキーワードを持つメソッドであり、クラスはこのメソッドをオーバーライドできます |
| 2 | メソッドの呼び出し | staticメソッドは、クラスではなくインターフェイスクラスでのみ呼び出すことができます。 | クラスだけでなくインターフェースでも呼び出すことができます |
| 3 | メソッド名 | インターフェイスと実装クラス。どちらも、相互にオーバーライドすることなく、同じ名前の静的メソッドを持つことができます。 | クラスの実装でデフォルトのメソッドをオーバーライドできます |
| 4。 | ユースケース | ユーティリティメソッドとして使用できます | すべての実装クラスで共通の機能を提供するために使用できます |
インターフェイスのデフォルトメソッドと静的メソッドの例
public interface DefaultStaticExampleInterface {
default void show() {
System.out.println("In Java 8- default method - DefaultStaticExampleInterface");
}
static void display() {
System.out.println("In DefaultStaticExampleInterface I");
}
}
public class DefaultStaticExampleClass implements DefaultStaticExampleInterface {
}
public class Main {
static void main(String args[]) {
// Call interface static method on Interface
DefaultStaticExampleInterface.display();
DefaultStaticExampleClass defaultStaticExampleClass = new DefaultStaticExampleClass();
// Call default method on Class
defaultStaticExampleClass.show();
}
} -
JavaのQueueインターフェイスのpeek()、poll()、remove()メソッドの違いは?
これは、処理前にデータを保持するためにインデントされたコレクションを表します。これは、先入れ先出し(FIFO)タイプの配置です。キューに入れられた最初の要素は、キューから取り出された最初の要素です。 peek()メソッド このメソッドは、オブジェクトを削除せずに、現在のキューの先頭にあるオブジェクトを返します。キューが空の場合、このメソッドはnullを返します。 例 import java.util.Iterator; import java.util.LinkedList; import java.util.Queue; public class QueueExample {  
-
抽象クラスとインターフェースの違い
抽象クラスは、デフォルトの動作を実装するインスタンスメソッドを持つことができます。インターフェイスは定数とインスタンスメソッドのみを宣言できますが、デフォルトの動作を実装することはできず、すべてのメソッドは暗黙的に抽象化されています。インターフェースにはすべてのパブリックメンバーがあり、実装はありません。