上級 › default メソッドの衝突と解決 › パターン3
default メソッドの衝突と解決
複数のインターフェースから同名を継承すると衝突します。
1 interface Greeter { 2 private String prefix() { return "Hi, "; } 3 ________ void greet(String name) { System.out.println(prefix() + name); } ^ 4 } 5 public class Main implements Greeter { 6 public static void main(String[] args) { 7 new Main().greet("Java"); 8 } 9 }
Main.java:3: error: interface abstract methods cannot have body
空欄を埋めてビルドを通す
インターフェースのメソッドは、本体(処理)を書くならdefaultかstaticかprivateのいずれかが必要です。何も付けなければ本体のない抽象メソッドとして扱われます。
次の問題