The konečná metóda v Jave sa používa ako a modifikátor neprístupu platí len pre a premenlivý , a metóda , alebo a trieda. Je zvyknutý obmedziť používateľa v Jave .
Nasledujúce sú rôznych kontextoch kde sa používa koncovka:
- Variabilné
- Metóda
- Trieda
Charakteristika finálneho kľúčového slova v Jave:
V jazyku Java sa kľúčové slovo final používa na označenie toho, že premennú, metódu alebo triedu nemožno upraviť alebo rozšíriť. Tu sú niektoré z jeho charakteristík:
- Záverečné premenné: Keď je premenná deklarovaná ako konečná, jej hodnotu nie je možné po inicializácii zmeniť. Je to užitočné pri deklarovaní konštánt alebo iných hodnôt, ktoré by sa nemali upravovať.
- Konečné metódy : Keď je metóda deklarovaná ako konečná, nemôže byť prepísaná podtriedou. Je to užitočné pre metódy, ktoré sú súčasťou verejného API triedy a nemali by byť upravované podtriedami.
- Záverečné triedy: Keď je trieda deklarovaná ako konečná, nemôže byť rozšírená o podtriedu. Je to užitočné pre triedy, ktoré sa majú používať tak, ako sú, a nemali by sa upravovať ani rozširovať.
- Inicializácia: Finálne premenné musia byť inicializované buď v čase deklarácie, alebo v konštruktore triedy. Tým sa zabezpečí, že hodnota premennej je nastavená a nemožno ju zmeniť.
- Výkon: Použitie final môže niekedy zlepšiť výkon, pretože kompilátor môže optimalizovať kód efektívnejšie, keď vie, že premennú alebo metódu nemožno zmeniť.
- Zabezpečenie: Finále môže pomôcť zlepšiť bezpečnosť tým, že zabráni škodlivému kódu v úprave citlivých údajov alebo správania.
Celkovo je konečné kľúčové slovo užitočným nástrojom na zlepšenie kvality kódu a zabezpečenie toho, že určité aspekty programu nemožno upravovať alebo rozširovať. Vyhlásením premenných, metód a tried za konečné môžu vývojári písať bezpečnejší, robustnejší a udržiavateľný kód.
Konečná premenná Java
Keď je premenná deklarovaná s konečné kľúčové slovo , jeho hodnotu nie je možné zmeniť , v podstate, a konštantný . To tiež znamená, že vy musí inicializovať konečnú premennú .
Ak je konečná premenná a odkaz , to znamená, že premenná nemôže byť znovu viazaný na referenciu iný objekt, ale vnútorný stav objektu, na ktorý odkazuje táto referenčná premenná, možno zmeniť, t. j. môžete pridať alebo odstrániť prvky z konečné pole alebo konečný odber.
Je dobrou praxou uvádzať konečné premenné veľkými písmenami a na oddelenie slov použiť podčiarkovník.
Príklad:
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); } }> Výkon
Value of PI: 3.14159>
Výkon:
Value of PI: 3.14159>
Rôzne metódy použitia konečnej premennej
Pozrime sa na rôzne metódy, ktoré môžeme použiť v jazyku Java.
1. konečná Premenná
Príklad:
// Final variable final int THRESHOLD = 5;>
2. Prázdna konečná premenná
Príklad:
// Blank final variable final int THRESHOLD;>
3. Statická konečná premenná
Príklad:
// Final static variable PI static final double PI = 3.141592653589793;>
4. Static Blank final Variable
Príklad:
// Blank final static variable static final double PI;>
Inicializuje sa konečná premenná
Musíme inicializovať konečnú premennú, inak kompilátor vyvolá chybu počas kompilácie. Konečná premenná môže byť inicializovaná iba raz, a to buď prostredníctvom an inicializátor alebo vyhlásenie o pridelení. Existujú tri spôsoby, ako inicializovať konečnú premennú:
všeobecná porucha ochrany
- Finálnu premennú môžete inicializovať, keď je deklarovaná. Tento prístup je najbežnejší. Konečná premenná sa nazýva a prázdna konečná premenná keď to je nie inicializovaná pri deklarácii. Nižšie sú uvedené dva spôsoby inicializácie prázdnej finálnej premennej.
- Prázdna konečná premenná môže byť inicializovaná vo vnútri blok inštancie inicializátora alebo konštruktér. Ak máte vo svojej triede viac ako jeden konštruktor, musí byť inicializovaný vo všetkých z nich, inak sa vyvolá chyba pri kompilácii.
- Prázdna konečná statická premenná môže byť inicializovaná vo vnútri a statický blok .
Pozrime sa na tieto dva rôzne spôsoby inicializácie konečnej premennej
Príklad:
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; } }>
Vo vyššie uvedenom kóde nebola žiadna hlavná metóda, pretože to bolo len na ilustračné účely, aby sme lepšie pochopili a vyvodili závery:
Pozorovanie 1: Kedy použiť konečnú premennú?
Jediný rozdiel medzi normálnou premennou a konečnou premennou je v tom, že hodnotu môžeme znova priradiť normálnej premennej, ale po priradení už nemôžeme zmeniť hodnotu konečnej premennej. Preto konečné premenné musia byť použité iba pre hodnoty, ktoré chceme, aby zostali konštantné počas vykonávania programu.
Poznámka 2: Referenčná konečná premenná.
Keď je konečná premenná odkazom na objekt, potom sa táto konečná premenná nazýva referenčná konečná premenná . Napríklad finále StringBuffer premenná vyzerá nižšie definovaná takto:
final StringBuffer sb;>
Ako všetci vieme, konečnú premennú nie je možné opätovne priradiť. Ale v prípade referenčnej konečnej premennej sa môže zmeniť vnútorný stav objektu, na ktorý odkazuje táto referenčná premenná. Upozorňujeme, že nejde o opätovné priradenie.
Táto vlastnosť Konečný sa volá netranzitivita . Aby ste pochopili, čo sa myslí vnútorným stavom objektu, ako je znázornené v nasledujúcom príklade:
Príklad 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); } }> Výkon
Geeks GeeksForGeeks>
The netranzitivita vlastnosť sa vzťahuje aj na polia, pretože polia sú objekty v jazyku Java. Pole s konečné kľúčové slovo sa tiež nazývajú konečné polia .
Poznámka: Ako je uvedené vyššie, konečnú premennú nie je možné opätovne priradiť, čo spôsobí chybu pri kompilácii.
Príklad 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; } }> Výkon:

Pamätajte: Keď sa konečná premenná vytvorí v metóde/konštruktore/bloku, nazýva sa lokálna konečná premenná a musí sa inicializovať hneď, ako je vytvorená. Pozrite si program nižšie pre lokálnu konečnú premennú.
Príklad:
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); } }> Výkon
20>
Zapamätajte si tieto kľúčové body tak, ako ich vnímate predtým, ako sa pohnete vpred, ako je uvedené nižšie:
- Všimnite si rozdiel medzi C++ konšt premenné a Java Konečný premenných. const premenné v C++ musia byť priradená hodnota pri deklarácii . Pre konečné premenné v Jave je to tak nie je potrebné ako vidíme vo vyššie uvedených príkladoch. Finálnej premennej je možné priradiť hodnotu neskôr, ale iba raz.
- Konečný s foreach slučka : konečná s tým, že každý výrok je právnym vyhlásením.
Príklad:
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 + ' '); } }> Výkon
1 2 3>
Vysvetlenie výstupu: Keďže i Premenná presahuje rozsah pri každej iterácii cyklu, je znovu deklarovaná pri každej iterácii, čo umožňuje použiť rovnaký token (i) na reprezentáciu viacerých premenných.
Príklad:
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 // ... }> Výkon
The value is: 10 Hello, world! Hello! Hello, final!>
Java Finálne triedy
Keď je trieda deklarovaná s Konečný kľúčové slovo v jazyku Java sa nazýva a záverečná trieda . Záverečná trieda nemôže byť predĺžený (zdedený) .
Konečná trieda má dve použitia:
Použitie 1: Jedným z nich je určite zabrániť dedičstvo , keďže záverečné hodiny nie je možné predĺžiť. Napríklad všetky Triedy obalov Páči sa mi to Celé číslo , Plavák , atď. sú záverečné triedy. Nemôžeme ich predĺžiť.
final class A { // methods and fields } // The following class is illegal class B extends A { // COMPILE-ERROR! Can't subclass A }>Použitie 2: Iné použitie finále s triedami je to vytvoriť nemennú triedu ako preddefinované Reťazec trieda. Nie je možné urobiť triedu nemennou bez toho, aby bola konečná.
Konečná metóda Java
Keď je metóda deklarovaná s Konečný kľúčové slovo, nazýva sa a konečná metóda v Jave. Konečná metóda nemôže byť prepísané .
najlepšie auto na svete
The Objekt trieda to robí – množstvo jej metód je konečných. Musíme deklarovať metódy s konečným kľúčovým slovom, pre ktoré sme povinní dodržiavať rovnakú implementáciu vo všetkých odvodených triedach.
Ilustrácia: Konečné kľúčové slovo s metódou
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!'); } }>Výhody konečného kľúčového slova v jazyku Java:
Posledné kľúčové slovo v jazyku Java poskytuje niekoľko výhod, vrátane:
- Zabezpečenie nemennosti: Keď je premenná alebo referencia označená ako konečná, jej hodnotu nie je možné po priradení zmeniť. To pomáha zaistiť, že údaje sú nemenné a nemôžu byť náhodne alebo úmyselne upravené.
- Zlepšenie výkonu : Použitie final môže niekedy pomôcť zlepšiť výkon, pretože Java Virtual Machine (JVM) dokáže optimalizovať kód efektívnejšie, keď vie, že určité hodnoty alebo odkazy nemožno zmeniť.
- Zjednodušenie pochopenia kódu: Vyhlásením premenných, metód alebo tried za konečné môžu vývojári uľahčiť pochopenie a zdôvodnenie ich kódu. Keď je hodnota alebo odkaz označený ako konečný, je jasné, že sa nezmení, čo môže zjednodušiť analýzu kódu a ladenie.
- Propagácia opätovného použitia kódu: Vyhlásením metód za konečné môžu vývojári zabrániť tomu, aby ich podtriedy prepísali. To môže pomôcť podporiť opätovné použitie kódu a znížiť duplicitu, pretože podtriedy musia používať implementáciu metódy rodičovskej triedy.
- Zvýšenie bezpečnosti: Použitie final môže pomôcť zvýšiť bezpečnosť tým, že zabráni škodlivému kódu v úprave citlivých údajov alebo správania.
Celkovo je konečné kľúčové slovo užitočným nástrojom na zlepšenie kvality kódu a zabezpečenie toho, že určité aspekty programu nemožno upravovať. Vyhlásením premenných, metód a tried za konečné môžu vývojári písať bezpečnejší, robustnejší a udržiavateľný kód.
Viac príkladov a správania finálnych metód a finálnych tried , prosím pozri Použitie konečného s dedením. Pozrite si prosím abstrakt v jave článok o rozdieloch medzi Konečný a abstraktné .
Súvisiaca otázka na pohovor (dôležitá): Rozdiel medzi konečným, konečným a finalizovaným v jazyku Java
Záver
Posledné kľúčové slovo v jazyku Java je metóda na vytváranie premenných, metód alebo tried obmedzených používateľom. V tomto návode sa podrobne zaoberáme posledným kľúčovým slovom Java a rozumieme všetkým jeho kontextom.
Kontexty sú vysvetlené pomocou programov Java v príkladoch, ktoré poskytujú úplné pochopenie predmetu.
Java Final Keyword – FAQ
Čo je konečná metóda v Jave?
Poslednou metódou v jazyku Java je metóda deklarovaná pomocou konečné kľúčové slovo , čo znamená, že jeho implementáciu nemožno prepísať podtriedami.
Je konečná metóda zdedená?
Nie, v jazyku Java nemôže byť konečná metóda zdedená podtriedou. To znamená, že podtrieda nemôže prepísať konečnú metódu .
Aké je konečné kľúčové slovo a statické kľúčové slovo v jazyku Java?
Konečné kľúčové slovo: Používa sa na deklarovanie premenných, metód alebo tried ako nemodifikovateľných.
Statické kľúčové slovo: Používa sa na deklarovanie členov triedy (premenných a metód), ktoré patria samotnej triede, nie jednotlivým objektom.
Môžeme napísať konečné kľúčové slovo s reťazcom v jazyku Java?
Áno, môžete deklarovať premennú s konečným kľúčovým slovom a priradiť jej reťazcový literál.