7-40~41 defaultメソッド、静的メソッド


  • インタフェースのデフォルトメソッドで、静的メソッド(JDK 1.8から)
  • を追加できます.
    なぜdefaultメソッドを使用するのか
  • インタフェースに新しいメソッド(抽象メソッド)を追加するのは難しいです.
    (インタフェース:抽象メソッドセット)
  • interface Repairable{
    	boolean isfinished(); // 추상 메서드
    }
    Repailableインタフェースにisfinisd()メソッドを追加しようとすると、そのインタフェースを継承するすべてのクラスでisfinisd()メソッドを実装する必要があります.(大幅な変更が必要)
    =>ソリューション:default method
    interface Repairable{
    	default boolean isfinished(){}; // Default 메서드(추상 메서드 X)
    }
    defaultメソッドは抽象メソッドではないため,インタフェースの原則に違反していると考えられる.
    defaultメソッドが既存のメソッドと競合する場合のソリューション
  • 複数のインタフェースのdefaultメソッド間の競合
  • インタフェースを実装するクラスでは、デフォルトのメソッドを上書きする必要があります.
  • メソッドと親メソッドの競合
  • 祖先クラスのメソッドは継承され、デフォルトのメソッドは無視されます.
  • ->大げさに言えば解決できる.