Препоръчано, 2020

Избор На Редактора

Разлика между Final, Final и Finalize в Java

Думите „окончателно, накрая и финализиране“ са в контекста на Java. Всеки един от тях е с различно функциониране. Основната разлика между окончателното, накрая и финализираното е, че финалът е модификатор за достъп, накрая е блок и финализирането е метод на обектния клас. Има някои други разлики между окончателните, окончателни и финализирани, които са обсъдени в таблицата за сравнение.

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

Основа за сравнениеФиналнакраяФинализиране
ОсновенФиналът е "Ключова дума" и "модификатор на достъп" в Java.Накрая е "блок" в Java.Финализирането е "метод" в Java.
приложимFinal е ключова дума, приложима за класове, променливи и методи.Накрая е блок, който винаги е свързан с блока try и catch.finalize () е метод, приложим за обекти.
работната(1) Крайната променлива става постоянна и не може да бъде преназначена.
(2) Крайният метод не може да бъде заменен от класа на детето.
(3) Крайният клас не може да бъде удължен.
А "накрая" блок, почистване на ресурсите, използвани в "опитайте" блок.Методът за финализиране извършва почистване на дейностите, свързани с обекта, преди неговото унищожаване.
ЕкзекуцияОкончателният метод се изпълнява при неговото повикване."Накрая" блок се изпълнява веднага след изпълнението на "try-catch" блок.Методът finalize () се изпълнява точно преди унищожаването на обекта.

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

“Final” е ключова дума в Java. Това е модификатор за достъп. Ключовата дума „окончателно“ е приложима за класовете, методите и променливите. Нека видим как работи с всяка от тях.

Крайна променлива

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

Заключителни методи

  • Когато даден метод в клас, е обявен за окончателен, той не може да бъде отменен от подкласа му.
  • Малките методи, които са обявени за крайни, могат да бъдат направени "вградени" от компилатора, което ще намали натоварването на функционалното извикване и ще увеличи подобренията в производителността.
  • Извикването на подменени методи се разрешава динамично, но когато методът е обявен за окончателен, той не може да бъде отменен. Следователно функционалното извикване може да бъде разрешено по време на компилиране.
 class A {окончателен void meth () {System.out.println ("Това е окончателен метод."); }} клас В разширява A {void meth () {// Clas B не може да наследи метода от клас A. System.out.println ("Не заменя"); }} 

Краен клас

  • Когато даден клас е обявен за окончателен, той не може да бъде наследен от всеки подклас.
  • Обявяването на класа като окончателен автоматично ще обяви всичките му методи окончателни.
  • Не можете да обявите клас като „абстрактно“ и „окончателно“.
 краен клас A {// ...} клас B разширява A {// клас B не може да наследи клас A // ...} 

Дефиниция на накрая

  • В Java “накрая” е блок, който винаги е свързан с блока try / catch.
  • Блокът "накрая" се изпълнява след блока try / catch и преди кода, следвайки блока try / catch.
  • Блокът "накрая" ще изпълни дали изключението е хвърлено или не.
  • Когато бъде хвърлено изключение и няма блокиращ блок, който да съвпада с изключението, блокът "накрая" се изпълнява.
  • Когато метод се върне към повикващия от блока try / catch чрез нечувано изключение или изрично декларация за връщане, блокът "finally" се изпълнява точно преди методът да се върне към повикващия.
  • Блокът "накрая" се използва за почистване на ресурсите или за освобождаване на паметта, използвана в блока "опитайте".
  • Блокът "накрая" не е задължителен, но е добра практика да се пише окончателно блок след блока try / catch.
 class FinallyExample {// Този метод изхвърля изключение от метода. static void procA () {try {System.out.println ("вътре в procA"); хвърли нов RuntimeException ("демо"); } накрая {System.out.println ("накрая procA's"); }} // Връщаме се от блока try. static void procB () {try {System.out.println ("вътре в procB"); се върне; } накрая {System.out.println ("накрая procB's"); }} // Изпълнете нормално блок за опит. static void procC () {try {System.out.println ("вътре в procC"); } накрая {System.out.println ("накрая"); } public public void main (String args []) {try {procA (); } catch (Exception e) {System.out.println ("Уловена изключение"); } procB (); procC (); }} // изходът в края на procA на procA е изключен в procB накрая 

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

  • Finalize е метод в клас обект.
  • Един обект може да съдържа някои не-Java ресурси, като например файлова дръжка; тогава трябва да бъде освободен, преди да бъде унищожен.
  • Този метод се извиква от сборника за боклук, преди да унищожи напълно обекта.
  • Този метод извършва дейности по почистване на обекта, преди да бъде унищожен.

Общата форма на метода finalize () е следната.

 protected void finalize () {// тук финализиращия код} 

Методът за финализиране е обявен за защитен, така че да не може да бъде достъпен отвън клас.

Този метод винаги се нарича преди събирането на боклука.

Ключови разлики между финала, финала и финализиране

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

Заключение:

Окончателен, накрая и финализиран има различен ефект, когато се прилага по метод.

Top