Всичко, което трябва да знаете за Final, Final и Finalize в Java



Тази статия за Final, Final и Finalize в Java ще ви даде пълен списък с разлики между Final, Final и Finalize ключови думи, заедно с практически внедрения.

Ако имате някакъв предишен опит от , тогава може би сте забелязали, че интервюиращите са склонни да задават сложни въпроси, обикновено взети от основните понятия. Един такъв въпрос, който най-често се задава, е да се прави разлика между окончателен, окончателен и финализиран в . Посредством тази статия ще направя ясна граница между финал, окончателно и финализиране в Java, което ще ви помогне да придобиете по-добри идеи.

В тази статия ще разгледам следните теми:





И така, нека започнем с първата ключова дума сред final, окончателно и финализиране в Java.

Крайна ключова дума

В Java final е ключова дума, която може да се използва и като модификатор на достъпа. С други думи, крайната ключова дума се използва за ограничаване на достъпа на потребителя. Може да се използва в различни контексти като:



  1. Променлива Финал
  2. Финален метод
  3. Финален клас

С всеки от тях крайната ключова дума има различен ефект. Нека сега видим как това се отразява на всеки от тях един по един.

1. Променлива крайна

Всеки път, когато последната ключова дума в се използва с променлива, поле или параметър, което означава, че след като препратката бъде предадена или екземплярът е направен, нейната стойност не може да се променя по време на изпълнението на програмата. В случай, че a без каквато и да е стойност е декларирана като окончателна, тя е известна като празна / неинициализирана крайна променлива и може да бъде инициализирана само чрез конструктор.

Нека сега видим пример.



публичен клас 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, когато методът е деклариран като окончателен, той не може да бъде от който и да е клас на дете по време на изпълнението на програмата

Нека да видим пример.

// FINAL METHOD клас A {final void method_abc () {System.out.println ('Това е окончателен метод и не може да бъде заменен')} void method_xyz () {System.out.println ('Това е нормален метод и може да бъде заменен ')}} клас B разширява A {void method_abc {// Compile Time Error} void method_xyz () {System.out.println (' Това е заменен метод в клас B ')}}

Досега вече сте виждали резултатите от декларирането на променлива и метод за окончателен, нека сега се преместим и да видим какво се случва, когато даден клас е деклариран като окончателен в Java.

3. Финален клас

В Java, когато даден клас е деклариран като окончателен, той не може да бъде . Това е така, защото, след като клас е деклариран като окончателен, всички членове на данни и методи, съдържащи се в класа, ще бъдат неявно декларирани като окончателни. Също така, след като клас е деклариран като окончателен, той вече не може да бъде деклариран като абстрактен. С други думи, клас може да бъде или от двата, окончателен или абстрактен.

Нека да видим пример.

// FINAL CLASS окончателен клас A {// class body} клас B разширява A {// Грешка при компилация // class body}

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

Накрая Блок

В Java накрая е незадължителен блок, който се използва за . Обикновено се предшества от блок за опит за улавяне. Накрая блокът се използва за изпълнение на важен код като почистване на ресурси или освобождаване на използването на паметта и др. Накрая блокът ще бъде изпълнен, независимо дали е обработено изключение или не. По този начин обвиването на кодовете за почистване в окончателен блок се счита за добра практика. Можете също да го използвате с блок за опити, без да се нуждаете от никакъв блок за хващане заедно с него.

Нека сега видим пример за същото.

клас A {public static void main (String args []) {try {System.out.println ('Try Block') хвърли ново изключение ()} catch (Exception e) {System.out.println ('Catch Block') } накрая {System.out.println ('Окончателно блокиране')}}}

Досега вече обсъдих окончателните и накрая ключови думи в Java. Нека сега хвърлим малко светлина върху последната ключова дума сред трите, която е финализиране на ключова дума в Java.

Финализиране на метода

Finalize е защитен нестатичен метод, който е дефиниран в клас Object и по този начин е достъпен за всички и всички обекти в Java.Този метод еизвикан от събирача на боклука, преди даден обект е напълно унищожен.Както понякога,an може да се наложи да завършите някаква важна задача като затваряне на отворена връзка, освобождаване на ресурс и т.н., преди да бъде унищожен. Ако тези задачи не бъдат изпълнени, това може да намали ефективността на програмата. По този начинсъбирачът на боклук го извиква за обектите, които вече не са препратени и са маркирани за събиране на боклук.

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

сортиране на масив в програма c ++

Нека да видим пример за същото.

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

С това стигаме до края на тази статия за окончателно, окончателно и финализиране в Java. За да завърша това, добавих сравнение между трите ключови думи, които ще ви помогнат да извлечете основните разлики с един поглед.

Таблица за сравнение - окончателно срещу окончателно срещу финализиране на ключови думи в Java

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

Окончателният метод в Java не може да бъде заменен от неговите дъщерни класове.

Окончателният клас в Java не може да бъде наследен от нито един дъщерен клас.

Накрая блокът в Java помага за почистване на ресурсите, използвани в блока tryМетодът Finalize помага за почистване на дейности за обекта, преди той да бъде унищожен от събирача на боклук
Екзекуция Той се изпълнява, когато е извикан от компилатораИзпълнява се веднага след изпълнението на блока try-catchТой се изпълнява непосредствено преди обектът да бъде унищожен

Надявам се, че чрез този Final, Final и Finalize в Java успях да изчистя концепциите и ви помогна да добавите стойност към вашите знания.

Ако сте намерили тази статия на тема „Окончателно, окончателно и финализиране в Java ”Подходящо, вижте от Edureka, доверена компания за онлайн обучение с мрежа от над 250 000 доволни учащи, разпространени по целия свят. Имате въпрос към нас? Моля, споменете го в раздела за коментари на това Final, Final и Finalize в Java и ние ще се свържем с вас.