Java 8では、「デフォルトメソッド」または(Defenderメソッド)の新機能が導入されています。これにより、開発者はこれらのインターフェイスの既存の実装を破ることなく新しいメソッドをインターフェイスに追加できます。これは、具体的なクラスがそのメソッドの実装を提供できない状況で、デフォルトとして使用するインタフェース定義の実装を可能にする柔軟性を提供します。
public interface A {
default void foo(){
System.out.println("Calling A.foo()");
}
}
public class ClassAB implements A {
}
一つの共通の問題は、彼らが最初に新機能について聞くと、人々は、デフォルトの方法を尋ねることがあります:クラス2つのインターフェイスを実装し、それらの両方のインターフェイスは、デフォルトを定義
場合はどうすれば同じシグネチャを持つメソッド?
public interface A {
default void foo(){
System.out.println("Calling A.foo()");
}
}
public interface B {
default void foo(){
System.out.println("Calling B.foo()");
}
}
public class ClassAB implements A, B {
}
このコードは次のような結果とコンパイルに失敗:Clazzに、私たちはして手動でそれを解決しなければならない、という修正するには
java: class Clazz inherits unrelated defaults for foo() from types A and B
この状況を説明するため
例相反する方法を無効にする:
public class Clazz implements A, B {
public void foo(){}
}
しかし、私たち自身の実装ではなく、インタフェースAからメソッドfoo()のデフォルトの実装を呼びたい場合はどうでしょうか?
次のように)#fooの(を参照することが可能である:
public class Clazz implements A, B {
public void foo(){
A.super.foo();
}
}
デフォルトhttp://zeroturnaround.com/rebellabs/java-8-explained-default-methods/についてのこの記事を参照してください#!/ – emeraldjava
関連記事https://stackoverflow.com/questions/31578427/what-is-the-purpose-of-the-default-keyword-in-java – Ravi