Конфликт имен: одно и то же имя метода в унаследованном классе и интерфейсе - PullRequest
1 голос
/ 08 февраля 2012
public class A extends B implements C {
}

Класс B и интерфейс C имеют одно и то же имя функции-члена (не одну и ту же сигнатуру). Этот код не может быть скомпилирован. Как я могу решить это?

Ответы [ 2 ]

3 голосов
/ 08 февраля 2012

Унаследованный класс реализует ваш интерфейсный метод, поэтому не должно быть ошибки. На самом деле, оба с одинаковыми именами - это идея реализации интерфейса ...

Вот контрольный список:

  • Метод должен иметь не только одно и то же имя, но и одну и ту же подпись. Убедитесь, что вы указали правильный аргумент и возвращаемый тип (включая начальные значения).
  • Если ваш подкласс A также реализует тот же метод, вы должны пометить его как override. В отношении подписи применяются те же правила.
  • Если вы переопределяете метод B, он не должен быть объявлен final.
0 голосов
/ 08 февраля 2012

Если ваш класс не имеет точно такое же имя метода и сигнатуру, он неправильно реализует ваш интерфейс.Это длинный и короткий путь.Вы можете удалить реализацию или изменить сигнатуру метода, чтобы исправить ее.

...