インターフェイスにより同一メソッドが複数表れたときの挙動

スーパークラスインターフェイスのメソッド名が同一のとき

interface I {
    public abstract void m();
}

abstract class Super {
    public abstract void m();
}

class Sub extends Super implements I {
    public void m() {
        System.out.println("hoo");
    }
}
public class Test {
    public static void main(String[]args) {
        new Sub().m();
    }
}

問題なくコンパイル&実行される。

インターフェイスのメソッドはスーパークラスですでに実装済みの時

interface I {
    public void m();
}

class C {
    public void m() {
        System.out.println("hoo");
    }
}

class Sub extends C implements I {
}

public class Test {
    public static void main(String[]args) {
        new Sub().m();
    }
}

これも問題なくコンパイル&実行される。

同じインターフェイススーパークラスとサブクラスで重複して現れたとき

interface I {
    public abstract void m();
}

class C implements I {
    public void m() {
    }
}

class Sub extends C implements I {
}
public class Test {
    public static void main(String[]args) {
        new Sub().m();
    }
}

またまたこれも問題ない

ダイヤモンド継承もどき

interface I {
    public abstract void m();
}

interface I2 extends I {
    // public abstract void m(); //ここにこれがあっても同じ
}

interface I3 extends I {
    // public abstract void m(); //ここにこれがあっても同じ
}

class C implements I2, I3 {
    public void m() {
        System.out.println("hoo");
    }
}

public class Test {
    public static void main(String[]args) {
        new C().m();
    }
}

問題ないよ

まとめ

結論としては上で挙げた4つのパターンともに問題なくコンパイル&実行できる。
要はインターフェイスは「public void m()」を実装してくれと宣言しているだけなので、「implements」したクラスは自分自身かスーパークラスが実装をしてくれていれば、問題なく動く。
というか、これらのケースで問題が起こらないようにするために、Javaでは多重継承が禁止された筈なので、問題がおこったら困る。