Odporúčaná, 2024

Redakcia Choice

Rozdiel medzi finálnou, konečnou a finalizáciou v jazyku Java

Slová "konečné, konečné a finalizované" spadajú do kontextu Java. Každá z nich má inú funkciu. Základný rozdiel medzi konečným a konečným finalizáciou je to, že finále je modifikátor prístupu, nakoniec je blok a finalizácia je metóda triedy objektov. Existujú aj iné rozdiely medzi konečným a konečným výsledkom, ktoré sú uvedené v porovnávacej tabuľke.

Porovnávacia tabuľka

Základ pre porovnanieFinálnykonečnedokončiť
základnéFinal je "kľúčové slovo" a "modifikátor prístupu" v jazyku Java.Nakoniec je "blok" v jazyku Java.Finalizácia je "metóda" v jazyku Java.
použiteľnýFinal je kľúčové slovo platné pre triedy, premenné a metódy.Nakoniec je blok, ktorý je vždy spojený so skúšobným blokom.finalize () je metóda použiteľná na objekty.
pracovné(1) Konečná premenná sa stane konštantnou a nemôže byť priradená.
(2) Trieda detí nemôže prekonať poslednú metódu.
(3) Záverečná trieda nemožno predĺžiť.
"Nakoniec" blok, vyčistiť prostriedky použité v "try" bloku.Metóda finalizácie vykonáva čistenie činností súvisiacich s objektom pred jeho zničením.
popravaKonečná metóda sa vykonáva po jeho výzve.Blok "Nakoniec" sa vykoná tesne po vykonaní bloku "try-catch".finalize () metóda vykoná tesne pred zničením objektu.

Definícia konečného

"Final" je kľúčové slovo v jazyku Java. Jedná sa o modifikátor prístupu. Konečné kľúčové slovo sa vzťahuje na triedy, metódy a premenné. Pozrime sa, ako to funguje s každým z nich.

Konečná premenná

  • Ak sa na premennú použije konečné kľúčové slovo, nemôže byť ďalej upravené.
  • Konečná premenná musí byť inicializovaná, keď je deklarovaná.
  • V spoločnom konvente kódovania sú konečné premenné deklarované v UPPERCASE.
  • Konečná premenná neobsahuje pamäť na základe jednotlivých prípadov.
 konečná hodnota int FILE_OPEN = 2; 

Záverečné metódy

  • Keď je metóda v triede deklarovaná ako konečná, nemôže ju prepísať jej podtrieda.
  • Malé metódy, ktoré sú deklarované ako konečné, môžu byť kompilátorom "inline", čím sa zníži réžia funkčných volaní a zvýšia sa výkonové vylepšenia.
  • Prepísané metódy hovoru, sú vyriešené dynamicky, ale keď je metóda deklarovaná ako konečná, nemožno ju overiť. Volanie funkcie sa preto môže vyriešiť v čase kompilácie.
 trieda A {final void meth () {System.out.println ("Toto je posledná metóda."); }} trieda B rozširuje A {void meth () {// Clas B nemôže zdediť metódu triedy A. System.out.println ("Nepodlieha"); }} 

Konečná trieda

  • Ak je trieda deklarovaná ako konečná, potom ju nemôže zdediť žiadna podtrieda.
  • Vyhlásenie triedy za konečné automaticky vyhlási všetky metódy za konečné.
  • Nemôžete deklarovať triedu ako "abstraktnú", tak aj "konečnú".
 konečná trieda A {// ...} trieda B sa rozširuje A {// Trieda B nemôže zdediť triedu A // ...} 

Definícia konečne

  • V jazyku Java je "konečne" blok, ktorý je vždy spojený s blokom try / catch.
  • Blok "konečne" sa vykoná po bloku try / catch a pred kódom try / catch block.
  • Blok "konečne" vykoná, či je výnimka vyhodená alebo nie.
  • Keď je výnimka vyhodená a žiadny blok úlovku sa nezhoduje s výnimkou, potom sa vykoná blok "konečne".
  • Keď sa metóda vracia volajúcemu z vnútra bloku try / catch prostredníctvom nezakazenej výnimky alebo explicitného návratového výkazu, vykoná sa blok "konečne" tesne predtým, ako sa metóda vráti volajúcemu.
  • Blok "konečne" sa používa na vyčistenie zdrojov alebo uvoľnenie pamäte, ktorá sa používa v bloku "try".
  • Blok "konečne" je voliteľný, ale je dobrým postupom napísať konečný blok po bloku try / catch.
 class FinallyExample {// Táto metóda udeľuje výnimku z metódy. statická void procA () {try {System.out.println ("inside procA"); hádzať nové RuntimeException ("demo"); } konečne {System.out.println ("procA's finally"); }} // Vráťte sa zo skúšobného bloku. statická prázdna procB () {try {System.out.println ("inside procB"); return; } nakoniec {System.out.println ("Nakoniec procB je"); }} // Vykonajte skúšobný blok normálne. statická prázdna procC () {try {System.out.println ("vnútri procC"); } konečne {System.out.println ("procC's finally"); }} verejné statické neplatné hlavné (String args []) {try {procA (); } úlovok (výnimka e) {System.out.println ("Vychytený výnimka"); } procB (); procC (); }} // výstup vnútri procA procA je nakoniec Výnimka ulovená vnútri procB procB konečne vnútri procC procC konečne 

Definícia finalizácie

  • Finalizácia je metóda v triede objektov.
  • Objekt môže byť držiteľom niektorých ne-java zdrojov, ako je súborový popisovač; potom musí byť oslobodený predtým, než bude zničený.
  • Táto metóda je vyvolaná zberačom odpadu pred úplným zničením objektu.
  • Táto metóda vykonáva činnosti čistenia objektu pred jeho zničením.

Všeobecná forma metódy finalize () je nasledujúca.

 chrániť void finalize () {// finalizačný kód tu} 

Spôsob finalizácie je deklarovaný ako chránený tak, aby nebol prístupný zvonku triedy.

Táto metóda sa vždy volá pred zberom odpadu.

Kľúčové rozdiely medzi finálnou, konečnou a finalizáciou

  1. Kľúčové slovo finále je modifikátor prístupu, nakoniec je blok a finalizácia je metóda.
  2. Kľúčové slovo finále sa vzťahuje na triedy, premenné a metódy tried, nakoniec je to blok spojený s blokom skúšok, ktorý sa používa na spracovanie výnimiek, finalizácia je metóda, ktorá funguje len na objektoch.
  3. Premenná, ktorá sa deklaruje ako konečná, sa stane konštantnou a nemôže byť znova priradená, metóda deklarovaná ako konečná nemôže byť prekonaná a trieda, ktorá bola deklarovaná ako konečná, sa nikdy nedá zdediť. Konečný blok sa používa na vyčistenie zdrojov využívaných skúšobným a úlovkovým blokom. Metóda dokončenia sa používa na vyčistenie zdrojov, ktoré objekt používa pred zničením objektu.

záver:

Konečný, nakoniec a finalizovaný má iný efekt pri použití na metódu.

Top