Почему приватные методы не могут быть финальными?
Вопрос: Избыточно ли использовать private
и final
одновременно для одного метода?
Я нашел следующий код в классе:
class SomeClass {
//--snip--
private final void doStuff()
{
// private work here
}
}
Если метод private
, то никто не сможет его переопределить, верно?
Почему же возможно использовать ключевое слово final
, если оно, по сути, не имеет эффекта в данном случае? (Или я чего-то не понимаю?)
1 ответ(ов)
Причина, по которой это разрешено, заключается в том, что в Java не сочли нужным добавлять специальный случай, запрещающий использовать модификатор private
. Это похоже на ситуацию с методами в интерфейсах, которые можно объявлять как public
, или вложенными классами в интерфейсах, которые могут быть объявлены как static
, хотя эти ключевые слова подразумеваются по умолчанию. Также можно объявлять методы как final
в классе, который уже объявлен как final
и так далее.
Java придерживается подхода, согласно которому не стоит возражать против добавления избыточных модификаторов. Это делается последовательно.
Добавление метода к существующему экземпляру объекта в Python
Примеры паттернов проектирования GoF в ядре библиотек Java
Можно ли создать экземпляр абстрактного класса?
Какова цель использования "final class" в Java?
Почему нельзя вызывать абстрактные функции из абстрактных классов в PHP?