Java не предоставляет синтаксис, который предотвратит реализацию одним классом двух разных интерфейсов. Это хорошо, потому что интерфейсы должны позволить вам забыть о том, с каким объектом вы имеете дело, и сосредоточиться только на функциях, связанных с этим интерфейсом.
В случае с животными это может показаться запутанным, потому что в реальной жизни ни одно животное не является кошкой и собакой. Но нет причин, чтобы один Java-класс не мог выполнить контракт как интерфейса Cat
, так и интерфейса Dog
. Если вы хотите нанести это на самом деле, рассмотрите коробку, содержащую как кошку, так и собаку!
Теперь, как указывают Торбен и другие, вы можете сознательно вводить методы в интерфейс, который столкнется с методами в другом интерфейсе. Это приведет к тому, что Java запретит использование обоих интерфейсов в одном классе. Но по причинам, перечисленным выше, это не очень хорошая работа для рассмотрения.
Наилучший подход, если вы должны заставить это отношение answer provided by NickJ.
Не уверен, что это соответствует вашему прецеденту (я полагаю, что животные - это всего лишь пример), но вы не можете использовать абстрактные классы «Cat» и «Bird»? –
Не понял, что ваш вопрос? Не могли бы вы рассказать немного? Если вы не хотите предоставлять реализацию интерфейса, не выполняйте его. –
'// Не реализуйте этот интерфейс вместе с Bird, потому что ...' – zch