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:
- Variabel
- Metode
- 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
- 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å.
- 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.
- 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:

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:
- 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.
- 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æringStatisk 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.