Rozdiel medzi Final, Final a Finalize v Jave
Obsah
- Porovnávacia tabuľka
- Definícia finále
- Konečná premenná
- Záverečné metódy
- Záverečná trieda
- Definícia dokončenia
- záver:
Slová „konečný, konečný a konečný“ sú v konkávnom jazyku Java. Každá z nich má odlišné fungovanie. Základný rozdiel medzi konečnou a konečnou úpravou je ten konečné je modifikátor prístupu, konečne je blok a uzavrieť je metóda triedy objektu. Medzi konečnou a konečnou konečnou podobou sú aj iné rozdiely, ktoré sú uvedené v porovnávacej tabuľke.
- Porovnávacia tabuľka
- definícia
- Kľúčové rozdiely
- záver
Porovnávacia tabuľka
Základ pre porovnanie | Konečné | konečne | uzavrieť |
---|---|---|---|
základné | Final je „Kľúčové slovo“ a „modifikátor prístupu“ v Jave. | Nakoniec je to „blok“ v Jave. | Finalizácia je v jazyku Java „metóda“. |
použiteľný | Final je kľúčové slovo použiteľné pre triedy, premenné a metódy. | Nakoniec je blok, ktorý je vždy spojený s blokom try a catch. | finalize () je metóda použiteľná na objekty. |
pracovné | (1) Konečná premenná sa stáva konštantnou a nemožno ju prideliť. (2) Konečná metóda nemôže byť potlačená triedou pre deti. (3) Záverečnú triedu nie je možné predĺžiť. | Blok „konečne“ vyčistite zdroje použité v bloku „vyskúšať“. | Finalizačná metóda vykonáva pred zničením činnosti súvisiace s objektom. |
poprava | Konečná metóda sa vykoná na základe jej výzvy. | Blok „Nakoniec“ sa vykoná ihneď po vykonaní bloku „try-catch“. | metóda finalize () sa vykoná tesne pred zničením objektu. |
Definícia finále
„Final“ je kľúčové slovo v jazyku Java. Je to modifikátor prístupu. Kľúčové slovo „final“ je použiteľné pre 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, nie je možné ju ďalej upravovať.
- Konečná premenná musí byť inicializovaná pri jej deklarovaní.
- V bežnej konvencii kódovania sú konečné premenné deklarované v UPPERCASE.
- Konečná premenná nezaberá pamäť na základe inštancie.
Záverečné metódy
- Ak je metóda v triede deklarovaná ako konečná, nemôže ju potlačiť jej podtrieda.
- Malé metódy, ktoré sú vyhlásené za konečné, môže kompilátor urobiť „inline“, čo zníži režijné náklady na volanie funkcií a zvýši zvýšenie výkonu.
- Volanie prepísaných metód je dynamicky vyriešené, ale keď je metóda deklarovaná ako konečná, nemožno ju prepísať. Preto môže byť volanie funkcie vyriešené v čase kompilácie.
trieda A {final void met () {System.out.ln ("Toto je konečná metóda."); }} trieda B rozširuje A {void met () {// Trieda B nemôže zdediť metódu triedy A. System.out.ln („Neprepisuje sa“); }}
Záverečná trieda
- Ak je trieda vyhlásená za konečnú, nemôže ju zdediť žiadna podtrieda.
- Vyhlásenie triedy za konečné automaticky vyhlási všetky svoje metódy za konečné.
- Nemôžete vyhlásiť triedu za „abstraktnú“ a „konečnú“.
konečná trieda A {// ...} trieda B sa rozširuje A {// Trieda B nemôže zdediť triedu A // ...}
- V 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 nasledujúcim po bloku try / catch.
- Blok „konečne“ vykoná, či je výnimka vyvolaná alebo nie.
- Ak sa vyvolá výnimka a ani v tom prípade sa nezhoduje žiaden blok úlovku, vykoná sa „konečne“ blok.
- Keď sa metóda vráti volajúcemu z vnútra bloku try / catch prostredníctvom neočakávanej výnimky alebo explicitného návratového príkazu, „konečne“ blok sa vykoná 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 použitej v bloku „vyskúšať“.
- Blok „konečne“ je voliteľný, je však dobré napísať blok nakoniec za blok try / catch.
class Nakoniec príklad {// Táto metóda vyhodí výnimku z metódy. static void procA () {try {System.out.ln ("inside procA"); hádzať nové RuntimeException („demo“); } nakoniec {System.out.ln ("konečne procAs"); }} // Návrat z pokusného bloku. static void procB () {try {System.out.ln ("inside procB"); return; } nakoniec {System.out.ln ("konečne procBs"); }} // Normálne vykonajte blok vyskúšania. static void procC () {try {System.out.ln ("inside procC"); } nakoniec {System.out.ln ("konečne procCs"); }} verejné statické prázdno main (String args) {try {procA (); } catch (Výnimka e) {System.out.ln ("Výnimka prichytená"); } procB (); procC (); }} // výstup vo vnútri procA procA je konečne Výnimka zachytená vo vnútri procB procB je konečne vo vnútri procC procC
Definícia dokončenia
- Finalizácia je metóda v triede objektov.
- Objekt môže držať niektoré zdroje, ktoré nie sú Java, napríklad popisovač súboru; potom musí byť prepustený pred zničením.
- Táto metóda je vyvolaná zberateľom odpadu skôr, ako úplne zničí objekt.
- Táto metóda vykonáva čistenie objektu pred jeho zničením.
Všeobecná forma metódy finalizácia () je nasledovná.
protected void finalize () {// finalizačný kód tu}
Metóda finalizácie je vyhlásená za chránenú, takže k nej nie je možné pristupovať zvonku triedy.
Táto metóda sa vždy volá pred zberom odpadu.
- Kľúčové slovo final je modifikátor prístupu, nakoniec je blok a finalizácia je metóda.
- Kľúčové slovo final je použiteľné pre triedy, premenné a metódy tried, nakoniec je blok spojený s blokom try catch, ktorý sa používa na spracovanie výnimiek, finalizácia je metóda, ktorá funguje iba na objektoch.
- Premenná, ktorá bola raz vyhlásená za konečnú, sa stáva konštantnou a už ju nemožno znova prideliť. Metódu vyhlásenú za konečnú nemožno prepísať a triedu, ktorá bola vyhlásená za konečnú, nemožno nikdy zdediť. Záverečný blok sa používa na vyčistenie zdrojov využívaných na vyskúšanie a chytenie bloku. Metóda finalize sa používa na vyčistenie zdrojov použitých objektom pred zničením objektu.
záver:
Konečné, konečné a finálne má iný účinok, keď sa použije na metódu.