Два интерфейса с одинаковой сигнатурой метода, реализованные в классе Java

У меня есть два интерфейса Java и один реализующий класс.

(Я использовал Eclipse для непосредственного запуска программы, и я не пытался проверять какие-либо предупреждения компилятора и так далее, явно компилируя из командной строки.)

Почему они бегают без проблем? Почему Java допускает это, даже если оно удовлетворяет «контракту» обоих интерфейсов, но создает неоднозначность в реализации класса?

Обновил пример.

public interface CassettePlayer {
    void play();
}

public interface DVDPlayer {
    void play();
}

public class CarPlayer implements CassettePlayer,DVDPlayer{

    @Override
    public void play() {
        System.out.println("This plays DVD, screw you Cassette !");
    }

    public static void main(String args[]) {
        CarPlayer cp = new CarPlayer();
        cp.play();

        CassettePlayer firstInterface = new CarPlayer();
        firstInterface.play();

        DVDPlayer secondInterface = new CarPlayer();
        secondInterface.play();
    }
}

Ответы на вопрос(7)

Ваш ответ на вопрос