Preporučeno, 2020

Izbor Urednika

Razlika između konačnog, konačnog i finaliziranja u Javi

Riječi „konačno, konačno i dovršiti“ leže u kontekstu Jave. Svaka od njih ima drugačije funkcioniranje. Osnovna razlika između konačnog, konačno i finaliziranog je da je konačni modifikator pristupa, konačno je blok i finalizirati je metoda klasa objekta. Postoje neke druge razlike između konačnog, konačnog i finaliziranog, o čemu se govori u tablici usporedbe.

Tablica usporedbe

Osnova za usporedbukonačniKonačnozavršiti
Osnovni, temeljniFinal je "ključna riječ" i "modifikator pristupa" u Javi.Konačno je "blok" u Javi.Finaliziranje je "metoda" u Javi.
primjenjivoFinal 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šenjeKonač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

  1. Ključna riječ final je modifikator pristupa, napokon je blok i finaliziranje je metoda.
  2. 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.
  3. 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.

Top