logo

siste nøkkelord i Java

De endelig metode i Java brukes som en modifikator for ikke-tilgang gjelder kun for a variabel , a metode , eller en klasse. Det er vant til begrense en bruker i Java .

Følgende er ulike kontekster hvor finalen brukes:

  1. Variabel
  2. Metode
  3. Klasse



Kjennetegn ved siste søkeord i Java:

I Java brukes det siste nøkkelordet for å indikere at en variabel, metode eller klasse ikke kan endres eller utvides. Her er noen av dens egenskaper:

  • Endelige variabler: Når en variabel er erklært som endelig, kan ikke verdien endres når den først er initialisert. Dette er nyttig for å deklarere konstanter eller andre verdier som ikke bør endres.
  • Endelige metoder : Når en metode er erklært som endelig, kan den ikke overstyres av en underklasse. Dette er nyttig for metoder som er en del av en klasses offentlige API og bør ikke endres av underklasser.
  • Avsluttende klasser: Når en klasse erklæres som endelig, kan den ikke utvides med en underklasse. Dette er nyttig for klasser som er ment å brukes som de er, og som ikke bør endres eller utvides.
  • Initialisering: Endelige variabler må initialiseres enten ved deklarasjonstidspunktet eller i klassens konstruktør. Dette sikrer at verdien til variabelen er satt og ikke kan endres.
  • Opptreden: Bruken av en final kan noen ganger forbedre ytelsen, ettersom kompilatoren kan optimalisere koden mer effektivt når den vet at en variabel eller metode ikke kan endres.
  • Sikkerhet: Finalen kan bidra til å forbedre sikkerheten ved å forhindre at ondsinnet kode endrer sensitive data eller atferd.

Totalt sett er det endelige nøkkelordet et nyttig verktøy for å forbedre kodekvaliteten og sikre at visse aspekter av et program ikke kan endres eller utvides. Ved å erklære variabler, metoder og klasser som endelige, kan utviklere skrive sikrere, robust og vedlikeholdbar kode.

Java Final Variable

Når en variabel er deklarert med siste søkeord , det er verdien kan ikke endres i hovedsak en konstant . Dette betyr også at du må initialisere en endelig variabel .

Hvis den endelige variabelen er a henvisning , betyr dette at variabelen ikke kan være tilbakebundet til referanse et annet objekt, men den interne tilstanden til objektet pekt av den referansevariabelen kan endres, dvs. du kan legge til eller fjerne elementer fra endelig array eller endelig samling.

Det er god praksis å representere sluttvariabler med store bokstaver, ved å bruke understrek for å skille 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);  } }>

Produksjon
Value of PI: 3.14159>

Produksjon:

  Value of PI: 3.14159>

Ulike metoder for bruk av endelig variabel

La oss se forskjellige metoder som vi kan bruke endelig 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 endelig variabel

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;>

Initialisere en endelig variabel

Vi må initialisere en endelig variabel, ellers vil kompilatoren gi en kompileringsfeil. En endelig variabel kan bare initialiseres én gang, enten via en initialiserer eller en oppdragserklæring. Det er tre måter å initialisere en endelig variabel på:

pekere i c
  1. Du kan initialisere en endelig variabel når den er deklarert. Denne tilnærmingen er den vanligste. En endelig variabel kalles a tom sluttvariabel hvis det er ikke initialisert under erklæringen. Nedenfor er de to måtene å initialisere en tom sluttvariabel på.
  2. En tom sluttvariabel kan initialiseres inne i en instans-initialiseringsblokk eller konstruktøren. Hvis du har mer enn én konstruktør i klassen din, må den initialiseres i dem alle, ellers vil en kompileringstidsfeil bli kastet.
  3. En tom siste statisk variabel kan initialiseres inne i a statisk blokk .

La oss se disse to forskjellige måtene å 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;  }   }>


Det var ingen hovedmetode i koden ovenfor, da det bare var for illustrasjonsformål for å få en bedre forståelse for å trekke konklusjoner:

Observasjon 1: Når skal man bruke en endelig variabel?

Den eneste forskjellen mellom en normalvariabel og en endelig variabel er at vi kan tilordne verdien til en normalvariabel, men vi kan ikke endre verdien til en endelig variabel når den først er tildelt. Derfor må endelige variabler kun brukes for verdiene som vi ønsker skal forbli konstante gjennom hele programmets utførelse.

Observasjon 2: Referanse til sluttvariabel.

Når en endelig variabel er en referanse til et objekt, kalles denne endelige variabelen referanse til sluttvariabel . For eksempel en finale StringBuffer variabelutseende definert nedenfor som følger:

final StringBuffer sb;>

Som vi alle vet kan en endelig variabel ikke tilordnes på nytt. Men når det gjelder en endelig referansevariabel, kan den interne tilstanden til objektet pekt av den referansevariabelen endres. Merk at dette ikke er omtildeling.

Denne egenskapen til endelig er kalt ikke-transitivitet . For å forstå hva som menes med den interne tilstanden til objektet som vist i eksemplet nedenfor, 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);  } }>

Produksjon
Geeks GeeksForGeeks>

De ikke-transitivitet egenskap gjelder også for arrays, fordi matriser er objekter i Java. Matriser med siste søkeord kalles også endelige matriser .

Merk: Som diskutert ovenfor, kan en endelig variabel ikke tilordnes på nytt, det vil gi kompileringstidsfeil.

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;  } }>

Produksjon:

Endelig variabel kasting kompileringstidsfeil

Huske: Når en endelig variabel opprettes inne i en metode/konstruktør/blokk, kalles den lokal sluttvariabel, og den må initialiseres en gang der den er opprettet. Se programmet nedenfor for lokal sluttvariabel.

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);  } }>

Produksjon
20>

Husk disse nøkkelpunktene slik de oppfattes før du går videre som listet nedenfor som følger:

  1. Legg merke til forskjellen mellom C++ konst variabler og Java endelig variabler. const-variabler i C++ må være tildelt en verdi når den er deklarert . For endelige variabler i Java er det ikke nødvendig som vi ser i eksemplene ovenfor. En endelig variabel kan tildeles verdi senere, men bare én gang.
  2. endelig med hver løkke : endelig med for-hver setning 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 + ' ');  } }>

Produksjon
1 2 3>

Utgangsforklaring: Siden Jeg variabel går utenfor omfanget med hver iterasjon av løkken, blir den re-erklært hver iterasjon, slik at den samme token (i) kan brukes til å representere flere variabler.

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  // ... }>

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

Java avsluttende klasser

Når en klasse er deklarert med endelig nøkkelord i Java, kalles det en siste klasse . En siste klasse kan ikke være utvidet (arvet) .

Det er to bruksområder for en siste klasse:

Bruk 1: Det ene er definitivt å forebygge arv , da sluttklasser ikke kan forlenges. For eksempel alle Innpakningskurs som Heltall , Flyte osv. er avsluttende klasser. Vi kan ikke utvide dem.

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

Bruk 2: Den andre bruken av finale med klasser er å lage en uforanderlig klasse som den forhåndsdefinerte String klasse. Man kan ikke gjøre en klasse uforanderlig uten å gjøre den endelig.

Java endelig metode

Når en metode er deklarert med endelig nøkkelord, kalles det en endelig metode i Java. En endelig metode kan ikke være overstyrt .

De Gjenstand klasse gjør dette - en rekke av metodene er endelige. Vi må deklarere metoder med det endelige nøkkelordet som vi er pålagt å følge den samme implementeringen gjennom alle de avledede klassene.

Illustrasjon: Siste søkeord 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!');  } }>

Fordeler med endelig nøkkelord i Java:

Det siste nøkkelordet i Java gir flere fordeler, inkludert:

  • Sikre uforanderlighet: Når en variabel eller referanse er merket som endelig, kan ikke verdien endres når den først er tildelt. Dette bidrar til å sikre at data er uforanderlige og ikke kan endres ved et uhell eller ondsinnet.
  • Forbedrer ytelsen : Bruken av finalen kan noen ganger bidra til å forbedre ytelsen, ettersom Java Virtual Machine (JVM) kan optimere koden mer effektivt når den vet at visse verdier eller referanser ikke kan endres.
  • Gjør koden lettere å forstå: Ved å erklære variabler, metoder eller klasser som endelige, kan utviklere gjøre koden deres lettere å forstå og resonnere rundt. Når en verdi eller referanse er merket som endelig, er det klart at den ikke vil endre seg, noe som kan forenkle kodeanalyse og feilsøking.
  • Fremme gjenbruk av kode: Ved å erklære metoder som endelige, kan utviklere forhindre at underklasser overstyrer dem. Dette kan bidra til å fremme kodegjenbruk og redusere duplisering, ettersom underklasser må bruke overordnet klasses implementering av metoden.
  • Forbedre sikkerheten: Bruken av final kan bidra til å øke sikkerheten ved å forhindre at ondsinnet kode endrer sensitive data eller atferd.

Totalt sett er det endelige nøkkelordet et nyttig verktøy for å forbedre kodekvaliteten og sikre at visse aspekter ved et program ikke kan endres. Ved å erklære variabler, metoder og klasser som endelige, kan utviklere skrive sikrere, robust og vedlikeholdbar kode.

For flere eksempler og oppførsel av endelige metoder og avsluttende klasser , vær snill å se Bruker endelig med arv. Vennligst se abstrakt i java artikkel for forskjeller mellom endelig og abstrakt .

Relatert intervjuspørsmål (viktig): Forskjellen mellom final, finalize og finalize i Java

Konklusjon

Det endelige nøkkelordet i Java er en metode for å lage brukerbegrensede variabler, metoder eller klasser. I denne opplæringen dekker vi Javas siste nøkkelord i detalj og forstår alle dets kontekster.

Kontekstene er forklart med Java-programmer i eksempler, noe som gir en fullstendig forståelse av emnet.

Java Final Keyword – Vanlige spørsmål

Hva er en siste metode i Java?

En siste metode i Java er en metode deklarert med siste søkeord , noe som betyr at implementeringen ikke kan overstyres av underklasser.

Går den endelige metoden i arv?

Nei, i Java kan en endelig metode ikke arves av en underklasse. Dette betyr at en underklasse kan ikke overstyre en endelig metode .

Hva er det endelige nøkkelordet og det statiske nøkkelordet i Java?

Endelig søkeord: Den brukes til å erklære variabler, metoder eller klasser som ikke-modifiserbare.

hadoop opplæring

Statisk nøkkelord: Det brukes til å deklarere klassemedlemmer (variabler og metoder) som tilhører selve klassen, ikke individuelle objekter.

Kan vi skrive siste nøkkelord med en streng i Java?

Ja, du kan deklarere en variabel med siste nøkkelord og tilordne streng bokstavelig til den.