Два интерфейса с одинаковой сигнатурой метода, реализованные в классе 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();
}
}