Rozdíl mezi Final, Final a Finalize v Javě
Obsah
- Srovnávací tabulka
- Definice finále
- Konečná proměnná
- Závěrečné metody
- Konečná třída
- Definice finalizace
- Závěr:
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.
- Srovnávací tabulka
- Definice
- Klíčové rozdíly
- Závěr
Srovnávací tabulka
Základ pro srovnání | Finále | Koneč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í.
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.
- 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 try catch, který se používá ke zpracování výjimek, finalizace je metoda, která pracuje pouze s objekty.
- 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.