У меня есть супер класс с окончательным методомJava: Принуждение Не Override
public final void foo(){ ... }
У меня есть супер класс с окончательным методомJava: Принуждение Не Override
public final void foo(){ ... }
Нет, вы не можете это сделать.
Переопределение метода в подклассе с его методом суперкласса с пометкой final
невозможно . Вы можете добавить метод с другой подписью
Назначение ключевого слова final
, применяемого к методу, заключается в том, что он не позволяет переопределять метод подкласса.
Вы не можете. Ключевое слово final
существует, чтобы предотвратить это. См. http://en.wikipedia.org/wiki/Final_(Java)#Final_methods
Вы не можете переопределить метод super, но можете его перегрузить.
Сделать окончательный метод, только если он имеет реализацию, которая не должна изменяться, и она имеет решающее значение для согласованного состояния объекта.
Основная цель финала - предотвратить переопределение. Таким образом, вы не можете переопределять конечные методы. Все еще вы можете перегружать окончательные методы.
Непонятно, почему вы должны иметь с тем же именем. Либо он предназначен для другого метода, то он может иметь другое имя без проблем или вы пытаетесь сделать что-то вроде переопределения, о котором вы утверждали, что этого не делать.
Если вашему подклассу требуется реализация интерфейса, которая мешает этому методу, рассмотрите внутренний класс для реализации этого интерфейса.
В противном случае метод в подклассе не отменяет суперкласса метод с тем же именем, если либо:
Вы можете добавить метод с тем же именем, но другую подпись. Или компилятор вас беспокоит. –
Похоже, у вас проблемы с дизайном. Если у child 'foo' нет другой подписи или супер' foo() 'не является окончательным, я не вижу, чтобы это произошло. – rocketboy
Мне нужно, чтобы оба метода были одинаковыми, мне интересно, есть ли какая-то аннотация для этой цели. – Ahmad