Рекомендуем, 2020

Выбор редакции

Разница между финалом, финалом и финализацией в Java

Слова «окончательно, окончательно и окончательно» находятся в контексте Java. Каждому из них предоставляется разное функционирование. Основное различие между final, finally и finalize заключается в том, что final - это модификатор доступа, finally - это блок, а finalize - это метод класса объекта. Существуют и другие различия между финальной, окончательной и финальной версиями, которые обсуждаются в сравнительной таблице.

Сравнительная таблица

Основа для сравненияокончательныйв заключениезавершать
основнойFinal - это ключевое слово и модификатор доступа в Java.Наконец, это «блок» в Java.Finalize - это «метод» в Java.
применимыйFinal - это ключевое слово, применимое к классам, переменным и методам.Наконец, это блок, который всегда связан с блоком try и catch.finalize () - это метод, применимый к объектам.
За работой(1) Конечная переменная становится постоянной и не может быть переназначена.
(2) Последний метод не может быть переопределен дочерним классом.
(3) Финальный класс не может быть продлен.
Блок "finally" очистит ресурсы, используемые в блоке "try".Метод Finalize выполняет очистку действий, связанных с объектом, до его уничтожения.
выполнениеОкончательный метод выполняется по его вызову.Блок «finally» выполняется сразу после выполнения блока «try-catch».Метод finalize () выполняется непосредственно перед уничтожением объекта.

Определение финала

«Финал» - это ключевое слово в Java. Это модификатор доступа. Ключевое слово «final» применимо к классам, методам и переменным. Давайте посмотрим, как это работает с каждым из них.

Конечная переменная

  • Когда к переменной применяется последнее ключевое слово, оно не может быть далее изменено.
  • Последняя переменная должна быть инициализирована при объявлении.
  • В общем соглашении о кодировании конечные переменные объявляются в UPPERCASE.
  • Последняя переменная не занимает память для каждого экземпляра.
 final int FILE_OPEN = 2; 

Окончательные методы

  • Когда метод в классе объявлен как final, он не может быть переопределен его подклассом.
  • Небольшие методы, которые объявлены как final, могут быть сделаны «встроенными» компилятором, что уменьшит накладные расходы на вызов функций и увеличит производительность.
  • Вызов переопределенных методов разрешается динамически, но когда метод объявлен как финальный, он не может быть переопределен. Следовательно, вызов функции может быть решен во время компиляции.
 class A {final void meth () {System.out.println («Это последний метод.»); }} класс B extends A {void meth () {// Класс B не может наследовать метод класса A. System.out.println («Не переопределяет»); }} 

Финальный класс

  • Когда класс объявлен как final, он не может быть унаследован ни одним подклассом.
  • Объявление класса как final автоматически объявляет все его методы final.
  • Вы не можете объявить класс как «абстрактный» и «конечный».
 последний класс A {// ...} класс B расширяет A {// Класс B не может наследовать класс A // ...} 

Определение наконец

  • В Java «finally» - это блок, который всегда связан с блоком try / catch.
  • Блок «finally» выполняется после блока try / catch и перед кодом, следующим за блоком try / catch.
  • Блок «finally» будет выполняться независимо от того, сгенерировано исключение или нет.
  • Когда выдается исключение, и ни один блок перехвата не соответствует исключению даже тогда, выполняется блок «finally».
  • Когда метод возвращается к вызывающей стороне из блока try / catch с помощью необработанного исключения или явного оператора return, блок «finally» выполняется непосредственно перед тем, как метод возвращается к вызывающей стороне.
  • Блок «finally» используется для очистки ресурсов или освобождения памяти, используемой в блоке «try».
  • Блок finally не является обязательным, но рекомендуется писать блок finally после блока try / catch.
 class FinalExample {// Этот метод выбрасывает исключение из метода. static void procA () {try {System.out.println ("внутри procA"); бросить новое RuntimeException ("demo"); } finally {System.out.println ("procA's finally"); }} // Возврат из блока try. static void procB () {try {System.out.println ("внутри procB"); вернуть; } finally {System.out.println ("procB's finally"); }} // Выполнить блок try нормально. static void procC () {try {System.out.println ("inside procC"); } finally {System.out.println ("procC's finally"); }} public static void main (String args []) {try {procA (); } catch (Exception e) {System.out.println («Exception catch»); } procB (); procC (); }} // вывод внутри procA, наконец, procA Исключение, обнаруженное внутри procB, procB, наконец, внутри procC, наконец, procC 

Определение финализации

  • Finalize - это метод в объектном классе.
  • Объект может содержать некоторые не Java-ресурсы, такие как дескриптор файла; тогда он должен быть освобожден, прежде чем он будет уничтожен.
  • Этот метод вызывается сборщиком мусора перед тем, как полностью уничтожить объект.
  • Этот метод выполняет очистку объекта перед его уничтожением.

Общая форма метода finalize () выглядит следующим образом.

 protected void finalize () {// код завершения здесь} 

Метод finalize объявлен как защищенный, поэтому к нему нельзя получить доступ извне класса.

Этот метод всегда вызывается перед сборкой мусора.

Ключевые различия между финалом, финалом и финализацией

  1. Ключевое слово final - это модификатор доступа, finally - это блок, а finalize - метод.
  2. Ключевое слово final применимо к классам, переменным и методам классов, наконец, это блок, связанный с блоком try catch, который используется для обработки исключений, finalize - это метод, который работает только с объектами.
  3. Переменная, однажды объявленная как final, становится константой и не может быть переназначена снова, метод, объявленный как final, не может быть переопределен, а класс, объявленный как final, никогда не может быть унаследован. Блок finally используется для очистки ресурсов, используемых блоком try и catch. Метод finalize используется для очистки ресурсов, используемых объектом, до его уничтожения.

Заключение:

Финал, окончание и финализация имеют различный эффект при применении к методу.

Top