Каждый язык, на котором может возникнуть эта проблема, решит проблему по-своему. В некоторых языках это может быть ошибкой; С ++ это так. Но в Java, если оба метода имеют совместимые спецификации исключений, т. Е. Если на самом деле можно реализовать метод, удовлетворяющий обоим интерфейсам, это определенно разрешено спецификацией языка. Один метод удовлетворяет каждому интерфейсу, и все в порядке. Бессмысленно спрашивать, к какому интерфейсу принадлежит метод; он принадлежит обоим или никому.
Обратите внимание, что вы можете создать класс с методом x()
, а затем расширить этот класс дочерним классом, который объявляет себя для реализации некоторого интерфейса, который включает метод x()
; дочерний процесс автоматически удовлетворяет интерфейс, используя унаследованный метод, который сам был объявлен без какого-либо знания об интерфейсе. Как видите, интерфейсы Java являются чисто декларативными; им все равно, откуда берется этот метод, только то, что этот класс включает их.
Я не могу говорить за PHP, но, возможно, он такой же, но я уверен, что он отличается некоторыми мелкими деталями.