В чем смысл final class в Java

В этой статье мы изучим использование ключевого слова final. ключевое слово final можно использовать вместе с переменными, методами и классами. Мы подробно рассмотрим следующие темы:

  • конечная переменная
  • окончательный метод
  • заключительный класс

Что такое final класс в Java?

Класс, объявленный с помощью ключевого слова final, называется конечным классом. Конечный класс не может быть унаследован подклассами. Используя конечный класс, мы можем ограничить наследование класса. Мы можем создать класс в качестве конечного только в том случае, если он является полным по своей природе, это означает, что он не должен быть абстрактным. В java все классы-оболочки являются конечными классами, такими как String, Integer и т. д.

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

Как его создать?

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

accessModifier final class className{
// Телокласса
}

Здесь accessModifier указывает область действия метода. Вы можете прочитать о модификаторах доступа.
final — это ключевое слово, которое используется для создания окончательного метода. Конечные переменные — это не что иное, как константы. Мы не можем изменить значение конечной переменной после ее инициализации. Давайте взглянем на приведенный ниже код:

В чем смысл final class в Java

Выход:

В чем смысл final class в Java

Мы получили ошибку компиляции в приведенной выше программе, потому что мы попытались изменить значение конечной переменной “MAX_VALUE”.

Примечание: Считается хорошей практикой иметь постоянные имена в ВЕРХНЕМ РЕГИСТРЕ(ЗАГЛАВНЫЕ БУКВЫ).

Пустая конечная переменная

Конечная переменная, которая не инициализирована во время объявления, называется пустой конечной переменной. Мы должны инициализировать пустую конечную переменную в конструкторе класса, иначе она выдаст ошибку компиляции (Ошибка: переменная MAX_VALUE, возможно, не была инициализирована).

Вот как пустая конечная переменная используется в классе:

В чем смысл final class в Java

Выход:

100

В чем польза пустой конечной переменной?

Допустим, у нас есть класс студентов, у которого есть поле под названием «Нет». Поскольку RollNo не должен изменяться после регистрации студента, мы можем объявить его в качестве конечной переменной в классе, но мы не можем инициализировать rollno заранее для всех студентов(в противном случае у всех студентов был бы один и тот же rollno). В таком случае мы можем объявить переменную rollno пустой конечной и инициализировать это значение во время создания объекта следующим образом:

В чем смысл final class в Java

Выход:

Rollno is:1234

Не инициализированная статическая конечная переменная

Статическая конечная переменная, которая не инициализируется во время объявления, может быть инициализирована только в статическом блоке. Пример:

В чем смысл final class в Java

Выход:

1230

Окончательный метод (final method)

Окончательный метод не может быть переопределен. Это означает, что даже если подкласс может вызвать окончательный метод родительского класса без каких-либо проблем, но он не может переопределить его.
Пример:

В чем смысл final class в Java

Вышеприведенная программа выдаст ошибку компиляции, однако мы можем использовать метод родительского класса final в подклассе без каких-либо проблем. Давайте взглянем на этот код: Эта программа будет работать нормально, так как мы не переопределяем окончательный метод. Это показывает, что конечные методы наследуются, но они не имеют права на переопределение.

В чем смысл final class в Java

Выход:

XYZ Class Method

Заключительный класс (final class)

Мы не можем расширить последний класс. Рассмотрим приведенный ниже пример:

В чем смысл final class в Java

Выход:

ThetypeABCcannotsubclassthefinalclassXYZ

Моменты, которые нужно запомнить

  1. Конструктор не может быть объявлен окончательным.
  2. Локальная конечная переменная должна инициализироваться во время объявления.
  3. Все переменные, объявленные в интерфейсе, по умолчанию являются окончательными.
  4. Мы не можем изменить значение конечной переменной.
  5. Окончательный метод не может быть переопределен.
  6. Конечный класс не наследуется.
  7. Если параметры метода объявлены окончательными, то значение этих параметров не может быть изменено.
  8. Рекомендуется называть конечную переменную во всех ЗАГЛАВНЫХ буквах.
  9. final, finally и finalize-это три разных термина. finally используется при обработке исключений, а finalize-это метод, вызываемый JVM во время сборки мусора.
Образовательный портал 3TY.RU
Adblock
detector