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

Автор: Laura McKinney
Дата На Създаване: 2 Април 2021
Дата На Актуализиране: 16 Може 2024
Anonim
ApplicationCoordinator для навигации между экранами / Павел Гуров (Avito)
Видео: ApplicationCoordinator для навигации между экранами / Павел Гуров (Avito)

Съдържание


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

  1. Сравнителна диаграма
  2. дефиниция
  3. Ключови разлики
  4. заключение

Сравнителна диаграма

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


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

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

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

  • Когато към променливата е приложена крайна ключова дума, тя не може да бъде допълнително модифицирана.
  • Последната променлива трябва да се инициализира, когато е декларирана.
  • В общо правило за кодиране, крайните променливи се декларират в UPPERCASE.
  • Крайната променлива не заема памет на per-instance.

final int FILE_OPEN = 2;

Окончателни методи

  • Когато метод в клас е обявен за окончателен, той не може да бъде отменен от неговия подклас.
  • Малките методи, които са обявени за окончателни, могат да бъдат направени „на място“ от компилатора, което ще намали режийните извиквания на функциите и ще повиши производителността.
  • Заменените методи се обаждат, се решават динамично, но когато метод е обявен за окончателен, той не може да бъде отменен. Следователно извикването на функция може да бъде разрешено по време на компилиране.

клас A {окончателен void meth () {System.out.ln ("Това е краен метод."); }} клас В разширява A {void meth () {// Clas B не може да наследи метода от клас A. System.out.ln ("Не отменя"); }}

Заключителен клас

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

окончателен клас A {// ...} клас B разширява A {// Клас B не може да наследи клас A // ...}

  • В Java „най-накрая“ е блок, който винаги се свързва с блока try / catch.
  • Блокът „най-накрая“ се изпълнява след блокът за изпробване / хващане и преди кода след блока за опит / улов.
  • Блокът "най-накрая" ще изпълни независимо дали изключението е хвърлено или не.
  • Когато е изхвърлено изключение и никой блок за улавяне не съвпада с изключението дори тогава, блокът "най-накрая" се изпълнява.
  • Когато метод се върне към обаждащия се от блока try / catch чрез uncaught изключение или изрично заявление за връщане, блокът „накрая“ се изпълнява точно преди методът да се върне към повикващия.
  • Блокът "най-накрая" се използва за почистване на ресурсите или освобождаване на паметта, използвана в блок "пробвам".
  • Блокът „най-накрая“ не е задължителен, но е добра практика най-накрая да напишете блок след опита / хващане.

клас FinalExample {// Този метод изхвърля изключение от метода. static void procA () {try {System.out.ln ("вътре в procA"); хвърлете нова RuntimeException ("демонстрация"); } най-накрая {System.out.ln ("най-накрая ProCA"); }} // Върнете се от пробен блок. static void procB () {try {System.out.ln ("вътре в procB"); се върне; } най-накрая {System.out.ln ("най-накрая proBs"); }} // Изпълнете пробния блок нормално. static void procC () {try {System.out.ln ("вътре в procC"); } накрая {System.out.ln ("най-накрая процесорите"); }} public static void main (String args) {опитайте {procA (); } улов (изключение д) {System.out.ln ("Изключение е хванато"); } procB (); procC (); }} // изход вътре в procA най-накрая Изключение, хванато в proB ProB най-накрая вътре в procC накрая

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

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

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


защитена void finalize () {// окончателен код тук}

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

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

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

Заключение:

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