Anbefalet, 2020

Redaktørens Valg

Forskel mellem Final, Endelig og Finalize i Java

Ordene 'endelig, endelig og afsluttende' ligger inden for rammerne af Java. Hver enkelt af dem får en anden funktion. Den grundlæggende forskel mellem endelig, endelig og afsluttende er, at den endelige er en adgangsmodifikator, endelig er en blok og afslutter er en metode til en objektklasse. Der er nogle andre forskelle mellem endelig, endelig og færdiggørelse, som diskuteres i sammenligningstabellen.

Sammenligningstabel

Grundlag for sammenligningFinalLangt om længeFærdiggør
GrundlæggendeEndelig er et "Søgeord" og "Adgangsmodifikator" i Java.Endelig er en "blok" i Java.Afslut er en "metode" i Java.
AnvendeligFinal er et søgeord, der gælder for klasser, variabler og metoder.Endelig er en blok, der altid er forbundet med prøve og fange blok.færdiggør () er en metode, der gælder for objekter.
Arbejder(1) Endelig variabel bliver konstant, og den kan ikke omfordeles.
(2) En endelig metode kan ikke overskrides af børnenes klasse.
(3) Endelig klasse kan ikke forlænges.
En "endelig" blok, rydde op de ressourcer, der bruges i "prøve" blok.Afslutte metode udfører rydder op aktiviteter relateret til objektet, før dets ødelæggelse.
UdførelseAfsluttende metode udføres efter opkaldet."Endelig" blok udføres lige efter udførelsen af ​​"try-catch" -blokken.færdiggør () -metoden udføres lige før objektets ødelæggelse.

Definition af endelig

"Final" er et søgeord i Java. Det er en adgang modifikator. Det "sidste" søgeord gælder for klasser, metoder og variabler. Lad os se, hvordan det virker med hver af dem.

Endelig Variabel

  • Når et sidste søgeord anvendes til variablen, kan det ikke ændres yderligere.
  • En endelig variabel skal initialiseres, når den er angivet.
  • I en fælles kodningskonvention er de endelige variable angivet i UPPERCASE.
  • Den endelige variabel optager ikke hukommelse på per-instans basis.
 sidste int FILE_OPEN = 2; 

Afsluttende metoder

  • Når en metode i klassen erklæres som endelig, kan den ikke overskrides af dens underklasse.
  • Små metoder, der erklæres endelige, kan laves "inline" af kompilatoren, som vil reducere overhead for funktionsopkald og øge præstationsforbedringer.
  • Overstyrte metoder kalder, løses dynamisk, men når en metode er erklæret som endelig, kan den ikke overskrides. Derfor kan funktionsopkaldet løses på kompileringstidspunktet.
 klasse A {final void meth () {System.out.println ("Dette er en endelig metode."); }} klasse B udvider A {void meth () {// Clas B kan ikke arve metoden i klasse A. System.out.println ("tilsidesætter ikke"); }} 

Endelig klasse

  • Når en klasse erklæres som endelig, kan den ikke arves af nogen underklasse.
  • Deklarering af en klasse som endelig vil automatisk opklare alle dens metoder endelige.
  • Du kan ikke erklære en klasse som både "abstrakt" og "endelig".
 sidste klasse A {// ...} klasse B udvider A {// klasse B kan ikke arve klasse A // ...} 

Definition af Endelig

  • I Java er "endelig" en blok, der altid er forbundet med prøve / fangstblokken.
  • Den "endelig" blok udføres efter prøve / fangstblokken og før koden følger prøve / fangstblok.
  • Den "endelig" blok vil udføre, om undtagelsen er kastet eller ej.
  • Når en undtagelse kastes, og ingen fangstblok svarer til undtagelsen selv da, udføres "endelig" blokken.
  • Når en metode vender tilbage til den, der ringer fra inde i prøve / fangstblokken via en ubegrænset undtagelse eller en eksplicit returopgørelse, udføres den "sidste" blok lige før metoden vender tilbage til opkalderen.
  • Den "endelige" blok bruges til at rydde op i ressourcerne eller frigøre hukommelsen, der bruges i "prøve" -blokken.
  • Den "endelig" blok er valgfri, men det er en god praksis at skrive endeligt blokere efter prøve / fangstblokken.
 klasse Endelig Eksempel {// Denne metode kaster en undtagelse ud af metoden. statisk tomrum procA () {prøv {System.out.println ("inside procA"); kaste nye RuntimeException ("demo"); } endelig {System.out.println ("procA's finally"); }} // Retur fra en prøveblok. statisk tomt procB () {prøv {System.out.println ("inside procB"); Vend tilbage; } endelig {System.out.println ("procB's finally"); }} // Udfør en prøveblok normalt. statisk tomrum procC () {prøv {System.out.println ("inside procC"); } endelig {System.out.println ("procC's finally"); }} offentlig statisk tomrum hoved (String args []) {prøv {procA (); } fangst (Undtagelse e) {System.out.println ("Undtaget fanget"); } procB (); procC (); }} // output inden procA procAs endelig Undtagelse fanget inde procB procB er endelig inden procC procC er endelig 

Definition af færdiggørelse

  • Afslut er en metode i en objektklasse.
  • Et objekt kan indeholde nogle ikke-java ressourcer, såsom filhåndtering; så skal den frigøres, inden den bliver ødelagt.
  • Denne metode påberåbes af affaldssamleren, før den ødelægger genstanden fuldstændigt.
  • Denne metode udfører oprydningsaktiviteter for objektet, før det ødelægges.

Den generelle form for metoden færdiggør () er som følger.

 beskyttet tomrum færdiggør () {// færdiggørelse kode her} 

Den afsluttende metode erklæres beskyttet, så den ikke kan nås uden for klassen.

Denne metode kaldes altid før affaldssamlingen.

Nøgleforskelle mellem endelig, endelig og færdiggørelse

  1. Nøgleordet endelig er en adgang modifikator, endelig er en blok og afslutte er en metode.
  2. Søgeordets endelige er gældende for klasserne, variablerne og metoderne i klasserne, endelig er en blok forbundet med prøvefangstblokken, der bruges til at håndtere undtagelser, færdiggørelse er en metode, der kun fungerer på objekter.
  3. Variablen engang erklæret som endelig bliver konstant og kan ikke omfordeles igen, en metode, der er erklæret som endelig, kan ikke overskrides, og klassen engang erklæret som endelig kan aldrig arves. Den endelige blok er brugt til at rydde op i de ressourcer, der anvendes ved forsøg og fangstblok. Den afsluttende metode bruges til at rydde de ressourcer, der bruges af et objekt, før objektet er ødelagt.

Konklusion:

Endelig, endelig og færdiggør, har en anden effekt, når den anvendes på en metode.

Top