Два интерфейса с одинаковой сигнатурой метода, реализованные в классе 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();
    }
}
16
задан MC Emperor 2 October 2014 в 16:45
поделиться