Все, что вам нужно знать о финальном, окончательном и финальном на Java



Эта статья о Final, finally и Finalize в Java предоставит вам полный список различий между ключевыми словами Final, finally и Finalize, а также практические реализации.

Если у вас есть предыдущий опыт , то вы могли заметить, что интервьюеры часто задают каверзные вопросы, которые обычно выбираются из основных понятий. Один из таких вопросов, который чаще всего задают, - это различать final, finally и finalize in . В рамках этой статьи я проведу четкую границу между final, finally и finalize на Java, что поможет вам лучше понять.

В этой статье я затрону следующие темы:





Итак, давайте начнем с самого первого ключевого слова среди final, finally и finalize на Java.

Последнее ключевое слово

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



  1. Переменный финал
  2. Окончательный метод
  3. Финальный класс

В каждом из них последнее ключевое слово имеет разный эффект. Давайте теперь посмотрим, как это повлияет на каждого из них по очереди.

1. Вариативное окончание

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

Давайте теперь посмотрим на пример.



public class A {int var1 = 123 // объявление конечных переменных final int var2 = 345 final int var3 // Попытка инициализировать пустую конечную переменную var = 555 // Ошибка A () {var1 = 111 // Нет ошибки var2 = 333 // Ошибка компиляции // Инициализация пустой конечной переменной var3 = 444 // Нет ошибки} // передача конечных параметров void avg (int param1, final int param2) {param1 = 2345 // Нет ошибки param2 = 1223 // Ошибка компиляции} // объявление окончательных полей void show () {final int fieldVal = 300000 fieldVal = 400000 // Ошибка}}

Итак, это все о том, как последнее ключевое слово влияет на переменную, давайте теперь посмотрим, как оно влияет на метод.

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

В Java всякий раз, когда метод объявляется окончательным, он не может быть любым дочерним классом на протяжении всего выполнения программы.

Давайте посмотрим на пример.

// ЗАКЛЮЧИТЕЛЬНЫЙ МЕТОД class A {final void method_abc () {System.out.println ('Это окончательный метод и его нельзя переопределить')} void method_xyz () {System.out.println ('Это обычный метод и можно переопределить ')}} класс B расширяет A {void method_abc {// Ошибка времени компиляции} void method_xyz () {System.out.println (' Это замещенный метод в классе B ')}}

До сих пор вы уже видели результаты объявления переменной и метода final, давайте продолжим и посмотрим, что произойдет, когда класс объявлен как final в Java.

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

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

Давайте посмотрим на пример.

// КОНЕЧНЫЙ КЛАСС final class A {// тело класса} class B расширяет A {// Ошибка компиляции // тело класса}

Надеюсь, к настоящему времени вы ясно поняли, как работает ключевое слово final. Итак, давайте перейдем к этой статье о final, finally и finalize на Java, чтобы выяснить роль ключевого слова finally.

Наконец блок

В Java, наконец, есть необязательный блок, который используется для . Обычно ему предшествует блок try-catch. Блок finally используется для выполнения важного кода, такого как очистка ресурсов или освобождение памяти и т. Д. Блок finally будет выполняться независимо от того, обработано ли исключение или нет. Таким образом, упаковка кодов очистки в блок finally считается хорошей практикой. Вы также можете использовать его с блоком try без необходимости использования блока catch вместе с ним.

Давайте теперь посмотрим на то же самое.

class A {public static void main (String args []) {try {System.out.println ('Try Block') throw new Exception ()} catch (Exception e) {System.out.println ('Catch Block') } finally {System.out.println ('Окончательный блок')}}}

До сих пор я уже обсуждал последние и наконец ключевые слова в Java. Давайте теперь пролим свет на последнее ключевое слово из трех, а именно на ключевое слово finalize в Java.

Завершить метод

Finalize - это защищенный нестатический метод, который определен в классе Object и, следовательно, доступен для любых без исключения объектов в Java.Этот методвызывается сборщиком мусора до полного уничтожения объекта.Как иногда,ан может потребоваться выполнить некоторые важные задачи, такие как закрытие открытого соединения, освобождение ресурса и т. д., прежде чем оно будет уничтожено. Если эти задачи не будут выполнены, это может снизить эффективность программы. Таким образомСборщик мусора вызывает его для объектов, на которые больше не ссылаются и которые были помечены для сборки мусора.

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

Какая польза от программирования сокетов

Давайте посмотрим на то же самое.

открытый класс A {public void finalize () выбрасывает Throwable {System.out.println ('Объект уничтожен сборщиком мусора')} public static void main (String [] args) {Edureka test = new Edureka () test = null System.gc ()}}

На этом мы подошли к концу этой статьи, посвященной финальному, окончательному и финализирующему на Java. В заключение я добавил сравнение между всеми тремя ключевыми словами, которое поможет вам сразу определить основные различия.

Таблица сравнения - Final vs Final vs Finalize Ключевые слова в Java

Фактор Финал в заключение Завершить
Определение Final - это ключевое слово, которое используется в Java как модификатор доступа.Наконец, это блок в Java, используемый для обработки исключений.Finalize - это метод в Java, используемый для сборки мусора.
заявка Final в Java используется с переменными, методами и классами для установки прав доступаНаконец, блок используется вместе с блоком try and catchМетод Finalize в Java используется с объектами, которые больше не используются
Функция Конечная переменная в Java - это константа, значение которой нельзя изменить после назначения.

Метод Final в Java не может быть переопределен его дочерними классами.

Конечный класс в Java не может быть унаследован каким-либо дочерним классом.

Блок finally в Java помогает очистить ресурсы, которые использовались в блоке try.Метод Finalize помогает очистить действия для объекта, прежде чем он будет уничтожен сборщиком мусора.
Исполнение Он выполняется, когда он вызывается компиляторомВыполняется сразу после выполнения блока try-catchОн выполняется непосредственно перед уничтожением объекта

Я надеюсь, что с помощью этого Final, Final и Finalize in Java я смог прояснить концепции и помог вам повысить ценность ваших знаний.

Если вы нашли эту статью «Заключительный, окончательный и завершающий в Java ' соответствующие, проверить от Edureka, надежной компании по онлайн-обучению с сетью из более чем 250 000 довольных учащихся по всему миру. Есть вопрос к нам? Пожалуйста, укажите это в комментариях к этому Завершить, наконец и завершить на Java и мы свяжемся с вами.