Для решения этой проблемы необходимо понять, для чего предназначены интерфейсы.
Интерфейс - это своего рода «контракт», так что каждый знает, какие методы обязательно реализуются в классе с этим интерфейсом.
Итак, если вам нужен класс, реализующий «DVDPlayer» (потому что вам нужен метод «play ()»), вы найдете CarPlayer.То же самое касается необходимости класса, реализующего CassettePlayer.Это техническое объяснение.
Но, конечно, в своем семантическом кодировании вы должны убедиться, что метод carPlayer "play ()" удовлетворяет семантике как DVDPlayer, так и CassettePlayer.Я думаю, что в практическом приложении это будет плохая практика.
Конечно, в вашем примере плохая идея иметь два интерфейса, объявляющих один и тот же метод.С практической точки зрения вы должны были создать интерфейс «Player» с методом «play ()» и иметь два других, более специфических интерфейса DVDPlayer и CassettePlayer (со специальными методами для DVD и кассет), которые наследуются от Player.С другой стороны, если вам не нужны специальные методы для DVD или кассет, тогда вам не нужны два разных интерфейса, реализующих только один и тот же метод - просто используйте один интерфейс Player, этого будет достаточно.