上級 › default メソッドの衝突と解決 › パターン2
default メソッドの衝突と解決
複数のインターフェースから同名を継承すると衝突します。
1 interface A { default String name() { return "A"; } } 2 interface B { default String name() { return "B"; } } 3 public class Main implements A, B { 4 _______________________________________________ ^ 5 public static void main(String[] args) { 6 System.out.println(new Main().name()); 7 } 8 }
Main.java:3: error: class Main inherits unrelated defaults for name() from types A and B
空欄を埋めてビルドを通す
同名のdefaultメソッドを複数継承すると衝突します。実装クラスで上書きし、A.super.name() で明示的に選びます。
次の問題