Rozdíl mezi Final, Final a Finalize v Javě

Autor: Laura McKinney
Datum Vytvoření: 2 Duben 2021
Datum Aktualizace: 15 Smět 2024
Anonim
Rozdíl mezi Final, Final a Finalize v Javě - Technologie
Rozdíl mezi Final, Final a Finalize v Javě - Technologie

Obsah


Slova „konečně a konečně“ leží v konkávním režimu Java. Každá z nich má jiné fungování. Základní rozdíl mezi konečnou a konečnou je to finále je modifikátor přístupu, Konečně je blok a dokončit je metoda třídy objektů. Existuje několik dalších rozdílů mezi konečnou a konečnou, které jsou diskutovány v srovnávací tabulce.

  1. Srovnávací tabulka
  2. Definice
  3. Klíčové rozdíly
  4. Závěr

Srovnávací tabulka

Základ pro srovnáníFináleKonečněDokončit
ZákladníFinal je „klíčové slovo“ a „modifikátor přístupu“ v Javě.Konečně je to „blok“ v Javě.Finalizace je „metoda“ v Javě.
PoužitelnýFinal je klíčové slovo použitelné pro třídy, proměnné a metody.Konečně je blok, který je vždy spojen s blokem try a catch.finalize () je metoda použitelná na objekty.
Pracovní(1) Konečná proměnná se stává konstantní a nelze ji přiřadit.
(2) Konečná metoda nemůže být podřazena třídě podřízené.
(3) Final Class nelze prodloužit.
Blok „konečně“ vyčistěte zdroje použité v bloku „try“.Metoda Finalize provádí před zničením činnosti související s objektem.
ProvedeníKonečná metoda se provádí na její výzvu.Blok „Konečně“ se spustí ihned po provedení bloku „try-catch“.metoda finalize () se provádí těsně před zničením objektu.


Definice finále

„Final“ je klíčové slovo v jazyce Java. Jedná se o modifikátor přístupu. Klíčové slovo „final“ je použitelné pro třídy, metody a proměnné. Podívejme se, jak to funguje s každou z nich.

Konečná proměnná

  • Pokud se na proměnnou použije konečné klíčové slovo, nelze ji dále upravovat.
  • Konečná proměnná musí být inicializována, když je deklarována.
  • V běžné konvenci kódování jsou konečné proměnné deklarovány v UPPERCASE.
  • Konečná proměnná nezabírá paměť podle jednotlivých instancí.

finální int FILE_OPEN = 2;

Závěrečné metody

  • Když je metoda ve třídě deklarována jako konečná, nemůže ji přepsat její podtřída.
  • Malé metody, které jsou deklarovány jako konečné, mohou být kompilátorem „inline“, což sníží režii volání funkcí a zvýší výkonnost.
  • Volání přepsaných metod je dynamicky vyřešeno, ale pokud je metoda deklarována jako konečná, nelze ji přepsat. Proto lze volání funkce vyřešit v době kompilace.

třída A {final void meth () {System.out.ln ("Toto je konečná metoda."); }} třída B rozšiřuje A {void meth () {// Clas B nemůže zdědit metodu třídy A. System.out.ln ("Nepřepisuje se"); }}

Konečná třída

  • Když je třída deklarována jako konečná, nemůže ji zdědit žádná podtřída.
  • Prohlášení třídy za finální automaticky prohlásí všechny své metody za konečné.
  • Nemůžete prohlásit třídu za „abstraktní“ i „finální“.

konečná třída A {// ...} třída B rozšiřuje A {// Třída B nemůže zdědit třídu A // ...}

  • V Javě „konečně“ je blok, který je vždy spojen s blokem try / catch.
  • Blok „konečně“ se provede po bloku try / catch a před kódem následujícím po bloku try / catch.
  • Blok „konečně“ provede, zda je výjimka vyvolána nebo ne.
  • Když je vyvolána výjimka a žádný blok blokování neodpovídá ani tehdy, provede se „konečně“ blok.
  • Když se metoda vrací volajícímu z bloku try / catch prostřednictvím neočekávané výjimky nebo explicitního příkazu pro návrat, provede se „konečně“ blok těsně předtím, než se metoda vrátí volajícímu.
  • Blok „konečně“ se používá k vyčištění zdrojů nebo uvolnění paměti použité v bloku „try“.
  • Blok „konečně“ je volitelný, ale je dobré psát konečně blok po bloku try / catch.

class FinalExample {// Tato metoda vyhodí výjimku z metody. static void procA () {try {System.out.ln ("inside procA"); hodit novou RuntimeException („demo“); } konečně {System.out.ln ("konečně procAs"); }} // Vraťte se z bloku pokusu. static void procB () {try {System.out.ln ("inside procB"); vrátit se; } konečně {System.out.ln ("konečně procBs"); }} // Normálně vykonejte blok try. static void procC () {try {System.out.ln ("inside procC"); } konečně {System.out.ln ("konečně procCs"); }} public static void main (String args) {try {procA (); } catch (Výjimka e) {System.out.ln ("Výjimka zachycena"); } procB (); procC (); }} // výstup uvnitř procA procA je konečně Výjimka zachycená uvnitř procB procB je konečně uvnitř procC procC

Definice finalizace

  • Finalizace je metoda ve třídě objektů.
  • Objekt může držet některé zdroje jiné než java, například popisovač souboru; pak musí být osvobozen, než bude zničen.
  • Tuto metodu vyvolá sběratel odpadu, než úplně zničí objekt.
  • Tato metoda provádí úklidové aktivity před zničením objektu.

Obecná forma metody finalize () je následující.


protected void finalize () {// finalizační kód zde}

Metoda finalizace je prohlášena za chráněnou, takže k ní nelze přistupovat mimo třídu.

Tato metoda se vždy volá před sběrem odpadu.

  1. Klíčové slovo final je modifikátor přístupu, nakonec je blok a finalizace je metoda.
  2. Klíčové slovo final je použitelné pro třídy, proměnné a metody tříd, konečně je blok spojený s blokem try catch, který se používá ke zpracování výjimek, finalizace je metoda, která pracuje pouze s objekty.
  3. Proměnná jednou deklarovaná jako finální se stává konstantní a nelze ji znovu přiřadit, metodu deklarovanou jako finální nelze přepsat a třídu jednou deklarovanou jako finální nelze nikdy zdědit. Konečný blok se používá k vyčištění prostředků využívaných blokem try a catch. Metoda finalizace se používá k vyčištění prostředků použitých objektem před zničením objektu.

Závěr:

Konečné, konečné a finální má při použití na metodu jiný účinek.