Предотвращение переопределения с помощью ключевого слова final в Java

Предотвращение переопределения с помощью ключевого слова final в Java

Несмотря на то что переопределение методов является одним из самых эффектив­ных языковых средств Java, иногда его желательно избегать.

Чтобы запретить переопределение метода, в начале его объявления следует указать ключевое слово final.

Методы, объявленные как final, переопределяться не могут. Такой способ примене­ния ключевого слова final демонстрируется в приведенном ниже фрагменте кода.

Метод niceMethod() объявлен как final и поэтому не может бьпъ переопределен в классе SecondClass. Любая попытка переопределить его приведет к ошибке во время компиляции.

Иногда методы, объявленные как final, могут способствовать увеличению производительности программы.

Компилятор вправе встраивать вызовы этих методов, поскольку ему известно, что они не будут переопределены в подклассе.

Нередко при вызове небольшого завершенного метода компилятор Java может встраивать байт-код для подпрограммы непосредственно в скомпилированный код вызывающего метода, тем самым снижая издержки на вызов метода.

Такая возможность встраивания вызовов присуща только завершенным методам. Как правило, вызовы методов разрешаются в Java динамически во время выполнения.

Такой способ называется поздним связыванием. Но поскольку завершенные методы не могут быть переопределены, их вызовы могут быть разрешены во время компи­ляции. И такой способ называется ранним связыванием.

Интересное видео по теме: