Srovnávací graf
Základ pro porovnání | Finále | Koneč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í
- Klíčové slovo final je modifikátor přístupu, nakonec je blok a finalizace je metoda.
- 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.
- 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.