Rozdiel medzi Final, Final a Finalize v Jave

Autor: Laura McKinney
Dátum Stvorenia: 2 Apríl 2021
Dátum Aktualizácie: 15 Smieť 2024
Anonim
Основные ошибки при возведении перегородок из газобетона #5
Video: Основные ошибки при возведении перегородок из газобетона #5

Obsah


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.

  1. Porovnávacia tabuľka
  2. definícia
  3. Kľúčové rozdiely
  4. záver

Porovnávacia tabuľka

Základ pre porovnanieKonečnékonečneuzavrieť
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.
popravaKoneč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.

konečná int FILE_OPEN = 2;

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.

  1. Kľúčové slovo final je modifikátor prístupu, nakoniec je blok a finalizácia je metóda.
  2. 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.
  3. 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.