Просто для любопытства я попробовал это:
public interface test1 {
public Object method1(String str);
}
public interface test2 {
public Object method1(String str);
}
public class Test implements test1, test2 {
public static void main(String... args) {
}
public Object method1(String str) {
return new Object();
}
}
Я ожидал какой-то ошибки в строке public class Test implements test1, test2 {
от Eclipse, но ее не было.
- Почему нет ошибки времени компиляции, поскольку происходит столкновение
имена методов?
- Сколько методов унаследовано в
class Test
?
- Если ответ на поставленный выше вопрос 2, то какой именно метод
мы реализовали?
- А во время выполнения, почему правильно реализованный метод
выбран? а не другой?
- И, наконец, есть ли способ реализовать оба? (Я почти уверен, что ответ НЕТ)
Я знаю, что с точки зрения дизайна, это может не произойти в реальных ситуациях, но, как я упоминал в начале, это просто пришло мне в голову, и я попробовал это.
Любые разъяснения / ссылки с благодарностью.