logo

sidste søgeord i Java

Det endelig metode i Java bruges som en modifikator uden adgang gælder kun for a variabel , a metode , eller en klasse. Det er vant til begrænse en bruger i Java .

Følgende er forskellige sammenhænge hvor finalen bruges:



  1. Variabel
  2. Metode
  3. klasse

Karakteristika for det endelige søgeord i Java:

I Java bruges det sidste nøgleord til at angive, at en variabel, metode eller klasse ikke kan ændres eller udvides. Her er nogle af dens egenskaber:

  • Endelige variabler: Når en variabel erklæres som endelig, kan dens værdi ikke ændres, når den først er blevet initialiseret. Dette er nyttigt til at erklære konstanter eller andre værdier, der ikke bør ændres.
  • Endelige metoder : Når en metode erklæres som endelig, kan den ikke tilsidesættes af en underklasse. Dette er nyttigt for metoder, der er en del af en klasses offentlige API og bør ikke modificeres af underklasser.
  • Afsluttende klasser: Når en klasse erklæres som endelig, kan den ikke forlænges med en underklasse. Dette er nyttigt for klasser, der er beregnet til at blive brugt, som de er, og som ikke bør ændres eller udvides.
  • Initialisering: Endelige variabler skal initialiseres enten på deklarationstidspunktet eller i klassens konstruktør. Dette sikrer, at værdien af ​​variablen er indstillet og ikke kan ændres.
  • Ydeevne: Brugen af ​​en final kan nogle gange forbedre ydeevnen, da compileren kan optimere koden mere effektivt, når den ved, at en variabel eller metode ikke kan ændres.
  • Sikkerhed: Finalen kan hjælpe med at forbedre sikkerheden ved at forhindre ondsindet kode i at ændre følsomme data eller adfærd.

Samlet set er det endelige nøgleord et nyttigt værktøj til at forbedre kodekvaliteten og sikre, at visse aspekter af et program ikke kan ændres eller udvides. Ved at erklære variabler, metoder og klasser som endelige kan udviklere skrive mere sikker, robust og vedligeholdelig kode.



Java Final Variable

Når en variabel er deklareret med sidste søgeord , dens værdi kan ikke ændres i det væsentlige en konstant . Det betyder også, at du skal initialisere en endelig variabel .

Hvis den endelige variabel er a reference , betyder det, at variablen ikke kan være genbundet til reference et andet objekt, men den interne tilstand af objektet, der peges af den referencevariabel, kan ændres, dvs. du kan tilføje eller fjerne elementer fra endelige array eller endelig afhentning.

Det er god praksis at repræsentere endelige variabler med store bogstaver ved at bruge understregning til at adskille ord.



Eksempel:

Java
public class ConstantExample {  public static void main(String[] args) {  // Define a constant variable PI  final double PI = 3.14159;  // Print the value of PI  System.out.println('Value of PI: ' + PI);  } }>

Produktion
Value of PI: 3.14159>

Produktion:

  Value of PI: 3.14159>

Forskellige metoder til brug af den endelige variabel

Lad os se forskellige metoder, som vi kan bruge den endelige variabel i Java.

1. endelig Variabel

Eksempel:

// Final variable final int THRESHOLD = 5;>

2. Tom endelig variabel

Eksempel:

// Blank final variable final int THRESHOLD;>

3. Statisk slutvariabel

Eksempel:

// Final static variable PI static final double PI = 3.141592653589793;>

4. Statisk Blank endelig variabel

Eksempel:

// Blank final static variable static final double PI;>

Initialisering af en endelig variabel

Vi skal initialisere en endelig variabel, ellers vil compileren afgive en kompileringsfejl. En endelig variabel kan kun initialiseres én gang, enten via en initialisering eller en opgaveerklæring. Der er tre måder at initialisere en endelig variabel på:

de er sangere
  1. Du kan initialisere en endelig variabel, når den er erklæret. Denne tilgang er den mest almindelige. En endelig variabel kaldes a blank slutvariabel hvis det er ikke initialiseret under erklæringen. Nedenfor er de to måder at initialisere en tom slutvariabel på.
  2. En tom slutvariabel kan initialiseres inde i en instansinitialiseringsblok eller konstruktøren. Hvis du har mere end én konstruktør i din klasse, skal den initialiseres i dem alle, ellers vil der blive smidt en kompileringsfejl.
  3. En tom endelig statisk variabel kan initialiseres inde i a statisk blok .

Lad os se disse to forskellige måder at initialisere en endelig variabel på

Eksempel:

Java
// Java Program to demonstrate Different // Ways of Initializing a final Variable // Main class  class GFG {    // a final variable  // direct initialize  final int THRESHOLD = 5;    // a blank final variable  final int CAPACITY;    // another blank final variable  final int MINIMUM;    // a final static variable PI  // direct initialize  static final double PI = 3.141592653589793;    // a blank final static variable  static final double EULERCONSTANT;    // instance initializer block for   // initializing CAPACITY  {  CAPACITY = 25;  }    // static initializer block for   // initializing EULERCONSTANT  static{  EULERCONSTANT = 2.3;  }    // constructor for initializing MINIMUM  // Note that if there are more than one  // constructor, you must initialize MINIMUM  // in them also  public GFG()   {  MINIMUM = -1;  }   }>


Der var ingen hovedmetode i ovenstående kode, da det blot var til illustrationsformål for at få en bedre forståelse for at drage konklusioner:

Observation 1: Hvornår skal man bruge en endelig variabel?

Den eneste forskel mellem en normal variabel og en endelig variabel er, at vi kan gentildele værdien til en normal variabel, men vi kan ikke ændre værdien af ​​en endelig variabel, når den først er tildelt. Derfor skal endelige variabler kun bruges til de værdier, som vi ønsker at forblive konstante under hele programmets udførelse.

Observation 2: Reference endelig variabel.

Når en endelig variabel er en reference til et objekt, kaldes denne endelige variabel for reference slutvariabel . For eksempel en finale StringBuffer variable udseende defineret nedenfor som følger:

final StringBuffer sb;>

Som vi alle ved, kan en endelig variabel ikke gentildeles. Men i tilfælde af en endelig referencevariabel kan den interne tilstand af objektet, der peges på af den referencevariabel, ændres. Bemærk, at dette ikke er gentildeling.

Denne ejendom af endelig Hedder ikke-transitivitet . For at forstå, hvad der menes med objektets indre tilstand som vist i nedenstående eksempel, som følger:

Eksempel 1:

Java
// Java Program to demonstrate // Reference of Final Variable // Main class class GFG {  // Main driver method  public static void main(String[] args)  {  // Creating an object of StringBuilder class  // Final reference variable  final StringBuilder sb = new StringBuilder('Geeks');  // Printing the element in StringBuilder object  System.out.println(sb);  // changing internal state of object reference by  // final reference variable sb  sb.append('ForGeeks');  // Again printing the element in StringBuilder  // object after appending above element in it  System.out.println(sb);  } }>

Produktion
Geeks GeeksForGeeks>

Det ikke-transitivitet egenskab gælder også for arrays, fordi arrays er objekter i Java. Arrays med sidste søgeord kaldes også endelige arrays .

Bemærk: Som diskuteret ovenfor kan en endelig variabel ikke gentildeles, da det vil give kompileringsfejl.

Eksempel 2:

Java
// Java Program to Demonstrate Re-assigning // Final Variable will throw Compile-time Error // Main class class GFG {  // Declaring and customly initializing  // static final variable  static final int CAPACITY = 4;  // Main driver method  public static void main(String args[])  {  // Re-assigning final variable  // will throw compile-time error  CAPACITY = 5;  } }>

Produktion:

Endelig variabel kastning af kompileringstidsfejl

Husk: Når en endelig variabel oprettes inde i en metode/konstruktør/blok, kaldes den lokal slutvariabel, og den skal initialiseres én gang, hvor den er oprettet. Se nedenstående program for lokal slutvariabel.

Eksempel:

Java
// Java program to demonstrate // local final variable // Main class class GFG {  // Main driver method  public static void main(String args[])  {  // Declaring local final variable  final int i;  // Now initializing it with integer value  i = 20;  // Printing the value on console  System.out.println(i);  } }>

Produktion
20>

Husk disse nøglepunkter, som de opfattes, før du går videre som angivet nedenfor som følger:

  1. Bemærk forskellen mellem C++ konst variabler og Java endelig variable. const variable i C++ skal være tildelt en værdi, når den deklareres . For endelige variabler i Java er det ikke nødvendigt som vi ser i ovenstående eksempler. En endelig variabel kan tildeles værdi senere, men kun én gang.
  2. endelig med hver sløjfe : endelig med for-hver erklæring er en juridisk erklæring.

Eksempel:

Java
// Java Program to demonstrate Final // with for-each Statement // Main class class GFG {  // Main driver method  public static void main(String[] args)  {  // Declaring and initializing  // custom integer array  int arr[] = { 1, 2, 3 };  // final with for-each statement  // legal statement  for (final int i : arr)  System.out.print(i + ' ');  } }>

Produktion
1 2 3>

Output forklaring: Siden jeg variabel går uden for rækkevidde med hver iteration af sløjfen, den erklæres igen for hver iteration, hvilket gør det muligt at bruge samme token (i) til at repræsentere flere variable.

Eksempel:

Java
public class Example {  public static void main(String[] args) {  final int VALUE = 10; // declaring a final variable    System.out.println('The value is: ' + VALUE);  // VALUE = 20; // uncommenting this line will cause a compiler error  // System.out.println('The new value is: ' + VALUE);    final String MESSAGE = 'Hello, world!'; // declaring a final variable  System.out.println(MESSAGE);    MyClass myObj = new MyClass();  myObj.printMessage();  myObj.printFinalMessage();    // MyOtherClass extends MyClass {} // uncommenting this line will cause a compiler error  } } class MyClass {  final String message = 'Hello!'; // declaring a final instance variable    void printMessage() {  System.out.println(message);  }    void printFinalMessage() {  final String finalMessage = 'Hello, final!';  System.out.println(finalMessage);  } } final class MyOtherClass { // declaring a final class  // ... }>

Produktion
The value is: 10 Hello, world! Hello! Hello, final!>

Java afsluttende klasser

Når en klasse erklæres med endelig nøgleord i Java, kaldes det en sidste klasse . En sidste klasse kan ikke være udvidet (arvet) .

Der er to anvendelser af en sidste klasse:

Anvendelse 1: Den ene er helt sikkert at forebygge arv , da afsluttende klasser ikke kan forlænges. For eksempel alle Indpakningsklasser synes godt om Heltal , Flyde osv. er afsluttende klasser. Vi kan ikke forlænge dem.

final class A {  // methods and fields }   // The following class is illegal  class B extends A  {   // COMPILE-ERROR! Can't subclass A }>

Anvendelse 2: Den anden brug af finale med klasser er at skabe en uforanderlig klasse ligesom den foruddefinerede Snor klasse. Man kan ikke gøre en klasse uforanderlig uden at gøre den endelig.

Java endelig metode

Når en metode er deklareret med endelig søgeord, kaldes det en endelig metode i Java. En endelig metode kan ikke være tilsidesat .

Det Objekt klasse gør dette - en række af dens metoder er endelige. Vi skal erklære metoder med det endelige nøgleord, for hvilke vi er forpligtet til at følge den samme implementering gennem alle de afledte klasser.

Illustration: Endeligt søgeord med en metode

class A  {  final void m1()   {  System.out.println('This is a final method.');  } } class B extends A  {  void m1()  {     // Compile-error! We can not override   System.out.println('Illegal!');  } }>

Fordele ved endeligt søgeord i Java:

Det sidste søgeord i Java giver flere fordele, herunder:

  • Sikring af uforanderlighed: Når en variabel eller reference er markeret som endelig, kan dens værdi ikke ændres, når først den er tildelt. Dette er med til at sikre, at data er uforanderlige og ikke kan ændres ved et uheld eller ondsindet.
  • Forbedring af ydeevne : Brugen af ​​finalen kan nogle gange hjælpe med at forbedre ydeevnen, da Java Virtual Machine (JVM) kan optimere kode mere effektivt, når den ved, at visse værdier eller referencer ikke kan ændres.
  • Gør kode lettere at forstå: Ved at erklære variabler, metoder eller klasser som endelige kan udviklere gøre deres kode nemmere at forstå og ræsonnere omkring. Når en værdi eller reference er markeret som endelig, er det klart, at den ikke ændres, hvilket kan forenkle kodeanalyse og fejlfinding.
  • Fremme genbrug af kode: Ved at erklære metoder som endelige kan udviklere forhindre underklasser i at tilsidesætte dem. Dette kan hjælpe med at fremme genbrug af kode og reducere duplikering, da underklasser skal bruge den overordnede klasses implementering af metoden.
  • Forbedring af sikkerheden: Brugen af ​​final kan hjælpe med at øge sikkerheden ved at forhindre ondsindet kode i at ændre følsomme data eller adfærd.

Samlet set er det endelige nøgleord et nyttigt værktøj til at forbedre kodekvaliteten og sikre, at visse aspekter af et program ikke kan ændres. Ved at erklære variabler, metoder og klasser som endelige kan udviklere skrive mere sikker, robust og vedligeholdelig kode.

For flere eksempler og opførsel af afsluttende metoder og afsluttende klasser , se venligst Brug endelig med arv. Se venligst abstrakt i java artikel for forskelle mellem endelig og abstrakt .

Relateret interviewspørgsmål (vigtigt): Forskellen mellem final, finalize og finalize i Java

Konklusion

Det endelige nøgleord i Java er en metode til at lave brugerbegrænsede variabler, metoder eller klasser. I denne tutorial dækker vi Javas sidste søgeord i detaljer og forstår alle dets sammenhænge.

Konteksterne forklares med Java-programmer i eksempler, hvilket giver en fuldstændig forståelse af emnet.

Java endelige søgeord – ofte stillede spørgsmål

Hvad er en sidste metode i Java?

En sidste metode i Java er en metode erklæret med sidste søgeord , hvilket betyder, at dens implementering ikke kan tilsidesættes af underklasser.

Er den endelige metode nedarvet?

Nej, i Java kan en endelig metode ikke nedarves af en underklasse. Det betyder, at en underklasse kan ikke tilsidesætte en endelig metode .

Hvad er det endelige søgeord og det statiske nøgleord i Java?

Endeligt søgeord: Det bruges til at erklære variabler, metoder eller klasser som ikke-modificerbare.

java lokal datotid

Statisk nøgleord: Det bruges til at erklære klassemedlemmer (variabler og metoder), der tilhører selve klassen, ikke individuelle objekter.

Kan vi skrive sidste søgeord med en streng i Java?

Ja, du kan erklære en variabel med det endelige nøgleord og tildele streng bogstavelig til den.