Doporučená, 2024

Redakce Choice

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

Slova 'konečný, konečný, a finalizovat' leží v kontextu Javy. Každý z nich má jinou funkci. Základní rozdíl mezi finálním, konečně a finalizací je ten, že finální je modifikátor přístupu, nakonec je blok a finalizace je metoda třídy objektu. Tam jsou některé jiné rozdíly mezi finálním, nakonec, a finalizovat, které jsou diskutovány ve srovnávací tabulce.

Srovnávací graf

Základ pro porovnáníFináleKonečněDokončit
ZákladníFinále je "klíčové slovo" a "modifikátor přístupu" v jazyce Java.Konečně je to "blok" v Javě.Finalizace je "metoda" v Javě.
PoužitelnýKonečné je klíčové slovo použitelné pro třídy, proměnné a metody.Nakonec je to blok, který je vždy spojen s blokem try a catch.finalize () je metoda použitelná pro objekty.
Pracovní(1) Konečná proměnná se stává konstantní a nemůže být znovu přiřazena.
(2) Závěrečná metoda nemůže být přepsána třídou dítěte.
(3) Konečnou třídu nelze prodloužit.
"Konečně" blok, vyčistit prostředky použité v "try" bloku.Metoda finalizace provádí čištění činností souvisejících s objektem před jeho zničením.
ProvedeníZávěrečná metoda je prováděna při jejím volání.Blok "Konečně" se provede 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. Je to modifikátor přístupu. Klíčové slovo „konečné“ je použitelné pro třídy, metody a proměnné. Podívejme se, jak to funguje s každým z nich.

Konečná proměnná

  • Pokud je na proměnnou použito klíčové slovo, nelze jej dále modifikovat.
  • Konečná proměnná musí být inicializována, když je deklarována.
  • Ve společné konvenci kódování jsou konečné proměnné deklarovány v UPPERCASE.
  • Poslední proměnná nezabírá paměť na základě instance.
 poslední int FILE_OPEN = 2; 

Závěrečné metody

  • Je-li metoda ve třídě deklarována jako konečná, nemůže být přepsána její podtřídou.
  • Malé metody, které jsou deklarovány jako konečné, mohou být kompilátorem vytvořeny „inline“, což sníží režii volání funkcí a zvýší vylepšení výkonu.
  • Volání přepsaných metod, dynamicky se řeší, ale když je metoda deklarována jako konečná, nemůže být přepsána. Volání funkce tedy může být vyřešeno při kompilaci.
 třída A {final void meth () {System.out.println ("Toto je poslední metoda."); }} třída B rozšiřuje A {void meth () {// Clas B nemůže zdědit metodu třídy A. System.out.println ("Nepřepíše"); }} 

Závěrečná třída

  • Pokud je třída deklarována jako konečná, nemůže být zděděna žádnou podtřídou.
  • Prohlášení třídy jako finální automaticky vyhlásí všechny své metody.
  • Třídu nemůžete prohlásit za „abstraktní“ a „finální“.
 poslední třída A {// ...} třída B rozšiřuje A {// Třída B nemůže zdědit třídu A // ...} 

Definice konečně

  • V jazyce Java je konečně blok, který je vždy spojen s blokem try / catch.
  • Blok „konečně“ se provede po bloku try / catch a před následujícím kódem try / catch.
  • Blok „konečně“ provede, zda je výjimka vyvolána či nikoliv.
  • Když je vyvolána výjimka a žádný blok blokování neodpovídá výjimce, pak je proveden blok „konečně“.
  • Když se metoda vrátí volajícímu z vnitřní části bloku try / catch přes nevyžádanou výjimku nebo explicitní příkaz návratu, blok „konečně“ se provede před tím, než se metoda vrátí volajícímu.
  • Blok „konečně“ slouží k vyčištění zdrojů nebo uvolnění paměti použité v bloku „try“.
  • Blok „konečně“ je nepovinný, ale je dobrým postupem zapsat konečně blok po bloku try / catch.
 class FinallyExample {// Tato metoda vyvolá výjimku z metody. static void procA () {try {System.out.println ("inside procA"); hodit novou RuntimeException ("demo"); } konečně {System.out.println ("procA je konečně"); }} // Vrátí se z bloku try. static void procB () {try {System.out.println ("inside procB"); vrátit se; } konečně {System.out.println ("procB je konečně"); }} // Normálně spusťte testovací blok. static void procC () {try {System.out.println ("inside procC"); } konečně {System.out.println ("procC je konečně"); }} public static void main (String args []) {try {procA (); } catch (Výjimka e) {System.out.println ("Výjimka byla zachycena"); } procB (); procC (); }} // výstup uvnitř procA procA je konečně Výjimka zachycena uvnitř procB procB konečně uvnitř procC procC konečně 

Definice finalizace

  • Finalizace je metoda ve třídě objektů.
  • Objekt může držet některé prostředky, které nejsou java, například popisovač souborů; pak musí být propuštěn, než bude zničen.
  • Tato metoda je vyvolána sběratelem odpadků, než objekt úplně zničí.
  • Tato metoda provádí činnosti čištění pro objekt před jeho zničení.

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

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

Metoda finalize je deklarována jako chráněná tak, aby nemohla být zpřístupněna z vnější strany třídy.

Tato metoda je vždy volána před sbírkou odpadků.

Klíčové rozdíly mezi finále, konečně a finalizací

  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 pokusu o úlovek, který se používá pro zpracování výjimek, finalizace je metoda, která pracuje pouze na objektech.
  3. Proměnná jednou deklarovaná jako finální se stává konstantní a nemůže být znovu přiřazena, metoda deklarovaná jako finální nemůže být přepsána a třída jednou deklarovaná jako konečná nemůže být nikdy zděděna. Konečný blok se používá k vyčištění zdrojů využívaných blokem try a catch. Metoda finalize se používá k vyčištění prostředků použitých objekt před zničením objektu.

Závěr:

Konečný, konečný a finalizovaný má jiný efekt, když je aplikován na metodu.

Top