Forskjellen mellom Final, Final og Finalize i Java

Forfatter: Laura McKinney
Opprettelsesdato: 2 April 2021
Oppdater Dato: 16 Kan 2024
Anonim
Nastya learns by playing with her dad | Collection of children’s videos
Video: Nastya learns by playing with her dad | Collection of children’s videos

Innhold


Ordene ‘final, final and finalize’ ligger innenfor Java-innholdet. Hver og en av dem får en annen funksjon. Den grunnleggende forskjellen mellom final, endelig og finalize er det endelig er en tilgangsmodifiserer, til slutt er en blokk og sluttføre er en metode for en objektklasse. Det er noen andre forskjeller mellom endelig, endelig og sluttført som blir diskutert i sammenligningstabellen.

  1. Sammenligningstabell
  2. Definisjon
  3. Viktige forskjeller
  4. Konklusjon

Sammenligningstabell

Grunnlag for sammenligningEndeligTil sluttFinalize
grunn~~POS=TRUNCFinal er et "nøkkelord" og "tilgangsmodifiserer" i Java.Endelig er en "blokk" i Java.Fullfør er en "metode" i Java.
AktueltFinal er et nøkkelord som gjelder klasser, variabler og metoder.Endelig er en blokk som alltid er assosiert med try and catch block.finalize () er en metode som gjelder objekter.
Jobber(1) Den endelige variabelen blir konstant, og den kan ikke tilordnes på nytt.
(2) En endelig metode kan ikke overstyres av barneklassen.
(3) Final Class kan ikke forlenges.
En "endelig" -blokk, rydd opp i ressursene som er brukt i "prøv" -blokk.Avslutt-metoden utfører renser aktiviteter relatert til objektet før det ødelegges.
HenrettelseDen endelige metoden utføres på anrop."Endelig" -blokk kjøres rett etter utførelsen av "try-catch" -blokk.finalize () -metoden kjøres rett før ødeleggelsen av objektet.


Definisjon av finalen

“Final” er et nøkkelord i Java. Det er en tilgangsmodifiserer. Det "endelige" nøkkelordet gjelder klassene, metodene og variablene. La oss se hvordan det fungerer med hver enkelt av dem.

Endelig variabel

  • Når et endelig nøkkelord brukes på variabelen, kan det ikke endres ytterligere.
  • En endelig variabel må initialiseres når den er deklarert.
  • I en vanlig kodingskonvensjon blir endelige variabler deklarert i UPPERCASE.
  • Den endelige variabelen opptar ikke hukommelse per eksempler.

endelig int FILE_OPEN = 2;

Endelige metoder

  • Når en metode i klassen er erklært som endelig, kan den ikke overstyres av underklassen.
  • Små metoder som er erklært som endelige, kan gjøres "inline" av kompilatoren, noe som vil redusere overhead for funksjonskalling og øke ytelsesforbedringene.
  • Overrømte metoder ringer, løses dynamisk, men når en metode er erklært som endelig, kan den ikke overstyres. Dermed kan funksjonskallingen løses på sammenstillingstidspunktet.

klasse A {final void meth () {System.out.ln ("Dette er en endelig metode."); }} klasse B utvider A {void meth () {// Clas B kan ikke arve metoden til klasse A. System.out.ln ("Ikke overstyrer"); }}

Sluttklasse

  • Når en klasse er erklært som endelig, kan den ikke arves av noen underklasse.
  • Hvis du erklærer en klasse som endelig, vil automatisk erklære alle metodene som endelige.
  • Du kan ikke erklære en klasse som både "abstrakt" og "endelig".

sluttklasse A {// ...} klasse B utvider A {// Klasse B kan ikke arve klasse A // ...}

  • I Java er "endelig" en blokk som alltid er assosiert med try / catch-blokken.
  • "Endelig" -blokk kjøres etter try / fangst-blokkering og før koden etter try / fangst-blokkering.
  • "Endelig" -blokken vil utføre om unntaket blir kastet eller ikke.
  • Når et unntak kastes, og ingen fangstblokk samsvarer med unntaket selv da, utføres “endelig” -blokken.
  • Når en metode kommer tilbake til den som ringer fra innsiden av try / catch-blokken via et ikke fanget unntak eller en eksplisitt returerklæring, blir "endelig" -blokken kjørt rett før metoden går tilbake til den som ringer.
  • "Endelig" -blokken brukes til å rydde opp i ressursene eller frigjøre minnet som brukes i "prøve" -blokken.
  • "Endelig" -blokken er valgfri, men det er en god praksis å skrive endelig blokkering etter prøve / fangst-blokkering.

klasse Endelig Eksempel {// Denne metoden kaster et unntak fra metoden. static void procA () {prøv {System.out.ln ("inside procA"); kaste ny RuntimeException ("demo"); } endelig {System.out.ln ("procAs endelig"); }} // Gå tilbake fra en prøveblokk. static void procB () {prøv {System.out.ln ("inside procB"); komme tilbake; } endelig {System.out.ln ("procBs endelig"); }} // Utfør en prøveblokk normalt. static void procC () {prøv {System.out.ln ("inside procC"); } endelig {System.out.ln ("procCs endelig"); }} public static void main (String args) {try {procA (); } fangst (unntak e) {System.out.ln ("unntak fanget"); } procB (); procc (); }} // output in procA procAs endelig unntak fanget i procB procBs endelig inne procC procC's endelig

Definisjon av fullføre

  • Fullfør er en metode i en objektklasse.
  • Et objekt kan inneholde noen ressurser som ikke er java, for eksempel filhåndtering. så må den frigjøres før den blir ødelagt.
  • Denne metoden påberopes av søppelsamleren før den ødelegger gjenstanden fullstendig.
  • Denne metoden utfører opprydningsaktiviteter for objektet før det blir ødelagt.

Den generelle formen for metoden ferdigstille () er som følger.


Protected void finalize () {// finaliseringskode her}

Fullføringsmetoden er erklært som beskyttet slik at den ikke kan nås fra utenfor klassen.

Denne metoden kalles alltid før søppelsamlingen.

  1. Nøkkelordet final er en tilgangsmodifiserer, endelig er en blokk og sluttbruk er en metode.
  2. Nøkkelordet final er gjeldende for klassene, variablene og metodene til klassene, endelig er en blokk tilknyttet try catch-blokken som brukes til å håndtere unntak, finalize er en metode som bare fungerer på objekter.
  3. Variabelen en gang erklært som endelig blir konstant og kan ikke tilordnes igjen, en metode som er erklært som endelig kan ikke overstyres, og klasse en gang erklært som endelig kan aldri arves. Den endelige blokken brukes til å rydde opp i ressursene som brukes ved å prøve og fange blokkeringen. Fullføringsmetoden brukes til å rydde opp i ressursene som brukes av et objekt før objektet blir ødelagt.

Konklusjon:

Final, endelig og finalize har en annen effekt når den brukes på en metode.