Razlika između konačnog, konačnog i konačnog u Javi
Sadržaj
- Usporedni grafikon
- Definicija konačnog
- Konačna varijabla
- Završne metode
- Finalna klasa
- Definicija dovršetka
- Zaključak:
Riječi "konačno, konačno i dovršeno" nalaze se u kontri Jave. Svakom od njih omogućeno je različito funkcioniranje. Osnovna razlika između konačnog i konačnog je u tome konačni modifikator pristupa, konačno je blok i Finalizirajte je metoda objektne klase. Postoje neke druge razlike između konačnog i konačnog koji su razmotreni u usporednoj tablici.
- Usporedni grafikon
- definicija
- Ključne razlike
- Zaključak
Usporedni grafikon
Osnove za usporedbu | konačni | Konačno | Finalizirajte |
---|---|---|---|
Osnovni, temeljni | Konačno je "Java" riječ za ključnu riječ i "modifikator pristupa". | Napokon je "blok" u Javi. | Finaliziranje je "metoda" u Javi. |
primjenjivo | Final je ključna riječ koja se odnosi na klase, varijable i metode. | Konačno je blok koji je uvijek povezan s blokom pokušaj i ulov. | finalize () je metoda primjenjiva na objekte. |
Radna | (1) Konačna varijabla postaje konstantna i ne može je biti dodijeljena. (2) Dječja klasa ne može zaobići konačnu metodu. (3) Završna klasa ne može se produžavati. | Blok "konačno", očistite resurse koji se koriste u bloku "pokušajte". | Finalizirajuća metoda obavlja čišćenje aktivnosti vezanih za objekt prije njegovog uništenja. |
Izvršenje | Završna metoda izvršava se nakon poziva. | "Konačno" blok izvršava se odmah nakon izvršenja bloka "try-catch". | metoda finalize () izvršava se neposredno prije uništenja objekta. |
Definicija konačnog
"Final" je ključna riječ na Javi. To je modifikator pristupa. "Konačna" ključna riječ primjenjiva je na klase, metode i varijable. Pogledajmo kako to funkcionira sa svakim od njih.
Konačna varijabla
- Kad se zadnja ključna riječ primijeni na varijablu, ona se ne može dalje mijenjati.
- Konačna varijabla mora se inicijalizirati kada je deklarirana.
- U uobičajenoj konvenciji kodiranja, konačne varijable su deklarirane u UPPERCASE.
- Konačna varijabla ne zauzima memoriju na instanci.
Završne metode
- Kad se metoda u klasi proglasi konačnom, ne može je nadjačati njezin podrazred.
- Male metode koje su proglašene konačnim mogu izvršiti sastavljanje „inline“ od strane prevoditelja što će smanjiti opće troškove poziva i povećati performanse.
- Prevaziđene metode pozivaju, rješavaju se dinamički, ali kada se metoda proglasi konačnom, ne može se nadjačati. Dakle, pozivanje funkcije može se riješiti u vrijeme sastavljanja.
klasa A {final void meth () {System.out.ln ("Ovo je konačna metoda."); }} klasa B proširuje A {void meth () {// Klasa B ne može naslijediti metodu klase A. System.out.ln ("Ne prevladava"); }}
Finalna klasa
- Kada je klasa deklarirana kao konačna, tada je ne može naslijediti nijedan podrazred.
- Proglašavanjem klase kao konačne automatski će se proglasiti konačnim sve njegove metode.
- Ne možete deklarirati klasu kao "apstraktnu" i "konačnu".
finalna klasa A {// ...} klasa B se proširuje A {// Klasa B ne može naslijediti klasu A // ...}
- U Javi je "napokon" blok koji je uvijek povezan s blokom try / catch.
- Blok "napokon" izvršava se nakon bloka pokušaja / ulova i prije koda koji slijedi nakon bloka pokušaj / ulov.
- Blok "konačno" izvršava se bez obzira na to je li iznimka bačena ili ne.
- Kada se izbaci izuzetak, a niti jedan blok hvata ne odgovara iznimci čak i tada, blok "konačno" se izvršava.
- Kad se metoda vrati pozivaču iz bloka try / catch putem uncaught iznimke ili izričite izjave povratka, blok "napokon" izvršava se prije nego što se metoda vrati pozivaocu.
- Blok "napokon" koristi se za čišćenje resursa ili oslobađanje memorije koja se koristi u bloku "probaj".
- Blok "konačno" nije obavezan, no dobra je praksa napisati konačni blok nakon bloka pokušaj / uhvatiti.
class FinalExample {// Ova metoda izbacuje izuzetak iz metode. static void procA () {probaj {System.out.ln ("unutar procA"); bacite novu RuntimeException ("demo"); } konačno {System.out.ln ("Procita napokon"); }} // Povratak iz pokušajnog bloka. static void procB () {probaj {System.out.ln ("unutar procB"); povratak; } napokon {System.out.ln ("procBs napokon"); }} // Izvršite pokušajni blok normalno. static void procC () {probaj {System.out.ln ("unutar procC"); } konačno {System.out.ln ("ProCC-ovi napokon"); }} javni statički void main (String args) {probaj {procA (); } ulov (Izuzetak e) {System.out.ln ("Izuzetak je uhvaćen"); } procB (); procC (); }} // izlaz unutar proA procA-e napokon Izuzetak je uhvaćen unutar procB-a ProB-a, konačno unutar procC-a ProC-a, konačno
Definicija dovršetka
- Finalize je metoda u objektnoj klasi.
- U objektu se mogu nalaziti neki nevavanski resursi, poput rukovanja datotekama; tada se mora osloboditi prije nego što se uništi.
- Ovu metodu poziva skupljač smeća prije nego što u potpunosti uništi objekt.
- Ova metoda obavlja aktivnosti čišćenja objekta prije nego što se on uništi.
Opći oblik metode finalize () je sljedeći.
protected void finalize () {// konačni kod ovdje)
Metoda dovršavanja proglašena je zaštićenom tako da joj se ne može pristupiti izvan klase.
Ova metoda se uvijek naziva prije odvoza smeća.
- Konačna riječ konačna je modifikator pristupa, na kraju je blok, a finaliziranje je metoda.
- Konačna ključna riječ primjenjiva je na klase, varijable i metode klasa, napokon je blok povezan s blokom pokušaj hvatanja koji se koristi za obradu izuzetaka, finalize je metoda koja djeluje samo na objektima.
- Promjena jednom proglašena konačnom postaje konstantna i ne može se ponovno dodijeliti, metoda proglašena konačnom ne može se nadjačati, a klasa koja je jednom proglašena konačnom nikad se ne može naslijediti. Konačni blok koristi se za čišćenje resursa koji se koriste u pokušaju i ulovu bloka. Metoda dovršetka koristi se za čišćenje resursa koje koristi objekt prije nego što se objekt uništi.
Zaključak:
Konačno, konačno i dovršeno ima drugačiji učinak ako se primijeni na metodu.