Java >> Java tutorial >  >> Tag >> final

Alt du behøver at vide om Final, Finally og Finalize i Java

Hvis du tidligere har erfaring med Java-interviews , så har du måske bemærket, at interviewerne har en tendens til at stille vanskelige spørgsmål, som normalt hentes fra de grundlæggende begreber. Et sådant spørgsmål, der oftest stilles, er at skelne mellem endelig, endelig og afsluttende i Java. Gennem denne artikel vil jeg trække en klar linje mellem endelig, endelig og afslutte i Java, hvilket vil hjælpe dig med at få bedre indsigt.

I denne artikel vil jeg dække følgende emner:

  • Endelig søgeord
  • Bloker endelig
  • Afslut metode
  • Sammenligningstabel – Endelig, Endelig og Afslut i Java

Så lad os komme i gang med det allerførste søgeord blandt final, finalize og finalize i Java.

Endelig søgeord

I Java er final et nøgleord, som også kan bruges som en adgangsmodifikator. Med andre ord bruges det endelige søgeord til at begrænse en brugers adgang. Det kan bruges i forskellige sammenhænge som:

  1. Endelig variabel
  2. Endelig metode
  3. Afsluttende klasse

Med hver af disse har det endelige søgeord en anden effekt. Lad os nu se, hvordan det påvirker hver af dem én efter én.

1. Endelig variabel

Når det endelige nøgleord i Java bruges med en variabel, et felt eller en parameter betyder det, at når referencen er videregivet eller instansieringen er udført, så kan dets værdi ikke ændres under hele programmets udførelse. Hvis en variabel uden nogen værdi er blevet erklæret som endelig, er den kendt som tom/uinitialiseret slutvariabel og kan kun initialiseres gennem en konstruktør.

Lad os nu se et eksempel.

public class A {
int var1 = 123;
//declaring final variables
final int var2 = 345;
final int var3;

//Trying to initialize a blank final variable
var = 555; //Error

A (){
var1 = 111; //No Error
var2 = 333; //Compilation Error

//Initializing a blank final variable
var3 = 444; //No Error
}

//passing final parameters
void avg(int param1, final int param2){
param1 = 2345; //No Error
param2 = 1223; //Compilation Error
}

//declaring final fields
void show(){
final int fieldVal = 300000;
fieldVal = 400000; //Error
}

}

Så, det hele handlede om, hvordan det endelige søgeord påvirker en variabel, lad os nu se, hvordan en metode påvirkes af det.

2. Endelig metode

I Java, når en metode er erklæret som endelig, kan den ikke tilsidesættes af nogen underordnet klasse under hele programmets udførelse.

Lad os se et eksempel.


//FINAL METHOD
class A {
final void method_abc(){
System.out.println("This is a Final method and cannot be overridden");
}

void method_xyz(){
System.out.println("This is a normal method and can be overridden");
}
}

class B extends A {
void method_abc{
//Compile Time Error
}

void method_xyz(){
System.out.println("This is an overridden method in class B");
}

}

Indtil nu har du allerede set resultaterne af at erklære en variabel og en metode endelig, lad os nu gå videre og se, hvad der sker, når en klasse erklæres som endelig i Java.

3. Afsluttende klasse

I Java, når en klasse erklæres som endelig, kan den ikke nedarves af nogen underklasse. Dette skyldes, at når en klasse først er erklæret som endelig, vil alle datamedlemmer og metoder indeholdt i klassen implicit blive erklæret som endelige. Når en klasse først er erklæret som endelig, kan den ikke længere erklæres som abstrakt. Med andre ord kan en klasse være en af ​​de to, endelig eller abstrakt.

Lad os se et eksempel.


//FINAL CLASS
final class A {
//class body
}

class B extends A{ //Compilation Error
//class body
}

Jeg håber nu, at du tydeligt har forstået, hvordan det endelige søgeord fungerer. Så lad os nu gå videre med denne artikel om endelig, endelig og færdiggørelse i Java for at finde ud af rollen som endelig nøgleord.

Bloker endelig

I Java er der endelig en valgfri blok, som bruges til undtagelseshåndteringen. Det er generelt forudgået af en try-catch blok. Til sidst bruges blokering til at udføre en vigtig kode såsom ressourceoprydning eller frigørelse af hukommelsesforbrug osv. En endelig blok vil blive eksekveret uanset om en undtagelse håndteres eller ej. Derfor betragtes det som en god praksis at pakke oprydningskoderne i en endelig blok. Du kan også bruge den med en prøveblok uden at skulle bruge en catch-blok sammen med den.

Lad os nu se et eksempel på det samme.

class A {
public static void main(String args[]) {
try {
System.out.println("Try Block");
throw new Exception();
} catch (Exception e) {
System.out.println("Catch Block");
} finally {
System.out.println("Finally Block");
}
}
}

Indtil nu har jeg allerede diskuteret de sidste og endelig nøgleord i Java. Lad os nu kaste lidt lys over det sidste søgeord blandt de tre, dvs. færdiggør søgeord i Java.

Afslut metode

Finalize er en beskyttet ikke-statisk metode, der er defineret i klassen Object og dermed er tilgængelig for alle objekter i Java. Denne metode kaldes af affaldssamleren, før en genstand er fuldstændig ødelagt. Som nogle gange skal et objekt muligvis udføre en vigtig opgave som at lukke en åben forbindelse, frigøre en ressource osv., før den bliver ødelagt. Hvis disse opgaver ikke udføres, kan det mindske effektiviteten af ​​programmet. Derfor kalder skraldemanden det for de genstande, der ikke længere refereres til, og som er blevet markeret til affaldsindsamling.

Denne metode er erklæret som beskyttet for at begrænse dens brug uden for klassen. Men du kan tilsidesætte den inde fra klassen for at definere dens egenskaber på tidspunktet for affaldsindsamling.

Lad os se et eksempel på det samme.


public class A {
public void finalize() throws Throwable{
System.out.println("Object is destroyed by the Garbage Collector");
}
public static void main(String[] args) {

Edureka test = new Edureka();
test = null;
System.gc();
}
}

Hermed kommer vi til slutningen af ​​denne artikel om endelig, endelig og færdiggørelse i Java. For at afslutte dette har jeg tilføjet en sammenligning mellem alle de tre søgeord, som vil hjælpe dig med at finde de største forskelle på et øjeblik.

Sammenligningstabel – endelig vs endelig vs færdiggør søgeord i Java

Faktor Endelig Endelig Afslut
Definition Final er et nøgleord og bruges som adgangsmodifikator i Java Endelig er der en blok i Java, der bruges til undtagelseshåndtering Finalisering er en metode i Java, der bruges til Garbage Collection
Applikation Final i Java bruges med variabler, metoder og klasser til at indstille adgangstilladelser Endelig bruges blok sammen med en prøv-og-fang-blok Finaliseringsmetoden i Java bruges med objekter, der ikke længere er i brug
Funktion Endelig variabel i Java er en konstant, hvis værdi ikke kan ændres, når den først er tildelt.

Den endelige metode i Java kan ikke tilsidesættes af dens underordnede klasser.

Afsluttende klasse i Java kan ikke arves af nogen underordnet klasse.

Endelig hjælper blokering i Java med at rydde op i de ressourcer, der er blevet brugt i prøveblokken Afslut-metoden hjælper med at rydde op i aktiviteter for objektet, før det ødelægges af skraldebeholderen
Udførelse Det udføres, når det påkaldes af compileren Kører lige efter udførelse af try-catch-blok Det udføres lige før et objekt ødelægges

Jeg håber, at jeg gennem denne Final, Finally og Finalize i Java var i stand til at rydde begreberne og hjalp dig med at tilføje værdi til din viden.

Hvis du fandt denne artikel om "Endelig, endelig og færdiggør i Java ” relevant, tjek Java-certificeringsuddannelsen af Edureka, en betroet online læringsvirksomhed med et netværk af mere end 250.000 tilfredse elever spredt over hele kloden. Har du et spørgsmål til os? Venligst nævne det i kommentarfeltet i denne Final, Finally and Finalize in Java og vi vender tilbage til dig.
Java tag