defaultキーワード

1006 ワード

defaultはjava 8に導入されたキーワードであり、defaultによって識別される方法は、Virtual extension methodsとも言える。
Virtual extension methods:インターフェースの内部にはいくつかのデフォルトの方法実現(すなわちインターフェースにはメソッド体が含まれ、これはJavaの前のバージョンによるインターフェースのシンタックス制限を打破することができる)が含まれており、インターフェースを拡張する際にインターフェースに関連する実現コードを破壊しないようにしています。
例えば、IterableインターフェースにおけるforEachとspliteratorの方法:
    default void forEach(Consumer super T> action) {
        Objects.requireNonNull(action);
        for (T t : this) {
            action.accept(t);
        }
    }

    default Spliterator spliterator() {
        return Spliterators.spliteratorUnknownSize(iterator(), 0);
    }
注意:
  • インターフェースでdefault修飾の方法を作成するには、方法体
  • が必要である。
  • インターフェースは、staticおよびdefaultで修飾された方法で方法体が必要であり、ここでstaticによって修飾された方法は、このインターフェースの静的な方法(すなわち、このインターフェース(クラス)に属する方法を表し、継承されてはいけない当然、Overrideは存在しないが、呼び出しられても良い)
  • 本類のオブジェクトは、直接にこのクラスのパブリックメンバシップ方法
  • を呼び出すことができる。
  • defaultキーワードは利点があり、デメリットはdefaultキーワードが抽象類とインターフェースの間の著しい違いを消したことにあります。つまりインターフェースは抽象的な方法しかないです。