
Tablica usporedbe
Osnova za usporedbu | konačni | Konačno | završiti |
---|---|---|---|
Osnovni, temeljni | Final je "ključna riječ" i "modifikator pristupa" u Javi. | Konačno je "blok" u Javi. | Finaliziranje je "metoda" u Javi. |
primjenjivo | Final je ključna riječ primjenjiva na klase, varijable i metode. | Konačno je blok koji je uvijek povezan s probnim i ulovnim blokom. | finalize () je metoda koja se primjenjuje na objekte. |
Radna | (1) Konačna varijabla postaje konstantna i ne može se preraspodijeliti. (2) Konačnu metodu ne može nadjačati podređena klasa. (3) Završna klasa se ne može produžiti. | Blok "konačno" očisti resurse koji se koriste u bloku "pokušaj". | Metoda finaliziranja vrši čišćenje aktivnosti vezanih uz objekt prije njegovog uništenja. |
Izvršenje | Konačna metoda izvršava se po njenom pozivu. | Blok "Konačno" izvršava se odmah nakon izvršenja bloka "try-catch". | metoda finalize () izvršava se neposredno prije uništenja objekta. |
Definicija finala
"Final" je ključna riječ u Javi. To je modifikator pristupa. Ključna riječ "konačna" primjenjiva je na klase, metode i varijable. Pogledajmo kako to funkcionira sa svakim od njih.
Konačna varijabla
- Kada se za varijablu primijeni konačna ključna riječ, ona se ne može dalje mijenjati.
- Konačna varijabla mora biti inicijalizirana kada je deklarirana.
- U zajedničkoj konvenciji kodiranja, konačne varijable deklarirane su u UPPERCASE.
- Konačna varijabla ne zauzima memoriju na temelju pojedinačne instance.
final int FILE_OPEN = 2;
Završne metode
- Kada je metoda u klasi deklarirana kao konačna, ne može se nadjačati njezinim podrazredom.
- Male metode koje su proglašene konačnim mogu se izraditi "inline" od strane prevodioca, što će smanjiti opterećenje funkcije poziva i povećati poboljšanja performansi.
- Poziv za poništene metode rješava se dinamički, ali kada je metoda deklarirana kao konačna, ne može se poništiti. Dakle, pozivanje funkcije može se riješiti tijekom kompiliranja.
klasa A {final void meth () {System.out.println ("Ovo je konačna metoda."); }} Klasa B proširuje {void meth () {// Clas B ne može naslijediti metodu klase A. System.out.println ("Ne zamjenjuje"); }}
Završna klasa
- Kada je klasa deklarirana kao konačna, onda je ne može naslijediti niti jedan podrazred.
- Proglašavanje klase kao konačne automatski će proglasiti sve njegove metode konačnim.
- Ne možete proglasiti klasu "apstraktnom" i "konačnom".
konačna klasa A {// ...} klasa B proširuje A {// Klasa B ne može naslijediti klasu A // ...}
Definicija Konačno
- U Javi "konačno" je blok koji je uvijek povezan s probnim / catch blokom.
- Blok "konačno" izvršava se nakon bloka try / catch i prije koda koji slijedi try / catch blok.
- Blok "konačno" izvršit će je li izbačena iznimka ili ne.
- Kada se izbaci iznimka, a nijedan blok za ulov ne odgovara iznimci čak i tada, izvršava se blok "konačno".
- Kada se metoda vraća pozivatelju unutar probnog / catch bloka putem izuzeća ili eksplicitnog povratnog izraza, blok "konačno" se izvršava neposredno prije nego se metoda vrati pozivatelju.
- Blok "konačno" koristi se za čišćenje resursa ili oslobađanje memorije koja se koristi u bloku "pokušaj".
- Blok "konačno" je opcionalan, ali je dobra praksa napisati blok za konačno nakon bloka try / catch.
class FinallyExample {// Ova metoda baca iznimku iz metode. static void procA () {try {System.out.println ("unutar procA"); bacanje novog RuntimeException ("demo"); } konačno {System.out.println ("procA's konačno"); }} // Povratak iz probnog bloka. statična praznina procB () {try {System.out.println ("unutar procB"); povratak; } napokon {System.out.println ("procB's konačno"); }} // Izvršite pokušaj blok normalno. static void procC () {try {System.out.println ("unutar procC"); } napokon {System.out.println ("procC's konačno"); }} statički javni prazni glavni (String args []) {try {procA (); } catch (Iznimka e) {System.out.println ("Izuzetak uhvaćen"); } procB (); procC (); }} // izlaz unutar procA procA je konačno Iznimka uhvaćena unutar procB-a konačno unutar procC-a
Definicija finalizacije
- Finaliziranje je metoda u klasi objekta.
- Objekt može sadržavati neke ne-java resurse kao što je file handle; onda mora biti oslobođen prije nego što bude uništen.
- Ova metoda se poziva od strane sakupljača smeća prije nego što potpuno uništi objekt.
- Ova metoda provodi aktivnosti čišćenja za objekt prije nego što se uništi.
Opći oblik metode finalize () je kao što slijedi.
protected void finalize () {// ovdje finalizira kod}
Metoda finaliziranja je deklarirana kao zaštićena tako da joj se ne može pristupiti izvan klase.
Ova metoda se uvijek zove prije prikupljanja smeća.
Ključne razlike između konačnog, konačnog i finaliziranog
- Ključna riječ final je modifikator pristupa, napokon je blok i finaliziranje je metoda.
- Ključna riječ final je primjenjiva na klase, varijable i metode klasa, konačno je blok pridružen probnom bloku koji se koristi za rukovanje iznimkama, finaliziranje je metoda koja radi samo na objektima.
- Varijabla koja je jednom deklarirana kao konačna postaje konstantna i ne može se ponovno preraspodijeliti, metoda deklarirana kao konačna ne može se nadjačati, a klasa jednom deklarirana kao konačna nikad se ne može naslijediti. Blok za konačno se koristi za čišćenje resursa koje koristi blok za pokušaj i ulov. Metoda finaliziranja koristi se za čišćenje resursa koje objekt koristi prije nego što je objekt uništen.
Zaključak:
Konačno, konačno i finaliziranje ima različit učinak kada se primjenjuje na metodu.