The lopullinen menetelmä Javassa käytetään a ei-pääsy-muokkaus koskee vain a muuttuja , a menetelmä , tai a luokkaa. Se on tottunut rajoittaa käyttäjää Javassa .
Seuraavat ovat eri konteksteissa missä finaalia käytetään:
- Muuttuva
- Menetelmä
- Luokka
Lopullisen avainsanan ominaisuudet Javassa:
Javassa viimeistä avainsanaa käytetään osoittamaan, että muuttujaa, menetelmää tai luokkaa ei voi muokata tai laajentaa. Tässä on joitain sen ominaisuuksia:
- Lopulliset muuttujat: Kun muuttuja julistetaan lopulliseksi, sen arvoa ei voi muuttaa, kun se on alustettu. Tämä on hyödyllinen vakioiden tai muiden arvojen ilmoittamisessa, joita ei pitäisi muuttaa.
- Lopulliset menetelmät : Kun menetelmä julistetaan lopulliseksi, alaluokka ei voi ohittaa sitä. Tämä on hyödyllistä menetelmille, jotka ovat osa luokan julkista API:ta ja joita alaluokat eivät saa muokata.
- Viimeiset tunnit: Kun luokka julistetaan lopulliseksi, sitä ei voi laajentaa alaluokalla. Tämä on hyödyllistä luokille, jotka on tarkoitettu käytettäväksi sellaisenaan ja joita ei tule muuttaa tai laajentaa.
- Alustus: Lopulliset muuttujat on alustettava joko ilmoituksen yhteydessä tai luokan rakentajassa. Tämä varmistaa, että muuttujan arvo on asetettu eikä sitä voi muuttaa.
- Esitys: Finaalin käyttö voi joskus parantaa suorituskykyä, koska kääntäjä voi optimoida koodin tehokkaammin, kun se tietää, että muuttujaa tai menetelmää ei voi muuttaa.
- Turvallisuus: Viimeinen voi auttaa parantamaan turvallisuutta estämällä haitallista koodia muuttamasta arkaluonteisia tietoja tai käyttäytymistä.
Kaiken kaikkiaan viimeinen avainsana on hyödyllinen työkalu koodin laadun parantamiseen ja sen varmistamiseen, että tiettyjä ohjelman ominaisuuksia ei voida muokata tai laajentaa. Ilmoittamalla muuttujat, menetelmät ja luokat lopullisiksi kehittäjät voivat kirjoittaa turvallisempaa, kestävämpää ja ylläpidettävämpää koodia.
Java lopullinen muuttuja
Kun muuttuja ilmoitetaan komennolla viimeinen avainsana , sen arvoa ei voi muuttaa , pohjimmiltaan a vakio . Tämä tarkoittaa myös sitä, että sinä täytyy alustaa lopullinen muuttuja .
Jos lopullinen muuttuja on a viite , tämä tarkoittaa, että muuttuja ei voi olla sidotaan uudelleen viitteeksi toiseen objektiin, mutta kyseisen viitemuuttujan osoittaman objektin sisäistä tilaa voidaan muuttaa, eli voit lisätä tai poistaa elementtejä lopullinen joukko tai lopullinen kokoelma.
On hyvä käytäntö esittää lopulliset muuttujat kaikilla isoilla kirjaimilla käyttämällä alaviivaa sanojen erottamiseen.
Esimerkki:
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); } }>
Lähtö
Value of PI: 3.14159>
Lähtö:
Value of PI: 3.14159>
Erilaiset lopullisen muuttujan käyttötavat
Katsotaanpa erilaisia menetelmiä, joilla voimme käyttää lopullista muuttujaa Javassa.
1. lopullinen muuttuja
Esimerkki:
// Final variable final int THRESHOLD = 5;>
2. Tyhjä lopullinen muuttuja
Esimerkki:
// Blank final variable final int THRESHOLD;>
3. Staattinen lopullinen muuttuja
Esimerkki:
// Final static variable PI static final double PI = 3.141592653589793;>
4. Staattinen tyhjä lopullinen muuttuja
Esimerkki:
// Blank final static variable static final double PI;>
Lopullisen muuttujan alustaminen
Meidän on alustettava lopullinen muuttuja, muuten kääntäjä antaa käännösaikavirheen. Lopullinen muuttuja voidaan alustaa vain kerran, joko an alustus tai toimeksiantolausunto. On kolme tapaa alustaa lopullinen muuttuja:
tiedon louhinta
- Voit alustaa lopullisen muuttujan, kun se on ilmoitettu. Tämä lähestymistapa on yleisin. Lopullista muuttujaa kutsutaan a tyhjä lopullinen muuttuja jos se on ei alustetaan ilmoituksen yhteydessä. Alla on kaksi tapaa alustaa tyhjä lopullinen muuttuja.
- Tyhjä lopullinen muuttuja voidaan alustaa sisällä ilmentymän alustuslohko tai rakentaja. Jos luokassasi on useampi kuin yksi konstruktori, se on alustettava kaikissa, muuten syntyy käännösaikavirhe.
- Tyhjä lopullinen staattinen muuttuja voidaan alustaa sisällä a staattinen lohko .
Katsotaanpa näitä kahta eri tapaa alustaa lopullinen muuttuja
Esimerkki:
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; } }>
Yllä olevassa koodissa ei ollut päämenetelmää, koska se oli vain havainnollistamistarkoituksessa saadakseen paremman käsityksen johtopäätösten tekemisestä:
Havainto 1: Milloin lopullista muuttujaa käytetään?
Ainoa ero normaalimuuttujan ja lopullisen muuttujan välillä on, että voimme määrittää arvon uudelleen normaalimuuttujalle, mutta emme voi muuttaa lopullisen muuttujan arvoa kerran määritettynä. Siksi lopullisia muuttujia tulee käyttää vain niille arvoille, jotka haluamme pysyä vakiona koko ohjelman suorituksen ajan.
Havainto 2: Viite lopullinen muuttuja.
Kun lopullinen muuttuja on viittaus objektiin, tätä lopullista muuttujaa kutsutaan nimellä viite lopullinen muuttuja . Esimerkiksi finaali StringBuffer muuttuja näyttää alla määritellyltä seuraavasti:
final StringBuffer sb;>
Kuten kaikki tiedämme, lopullista muuttujaa ei voi määrittää uudelleen. Mutta referenssimuuttujan tapauksessa kyseisen viitemuuttujan osoittaman kohteen sisäistä tilaa voidaan muuttaa. Huomaa, että tämä ei ole uudelleenmäärittely.
Tämä ominaisuus lopullinen kutsutaan ei-transitiivisuus . Ymmärtääksesi, mitä kohteen sisäisellä tilalla tarkoitetaan alla olevassa esimerkissä seuraavasti:
Esimerkki 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); } }>
Lähtö
Geeks GeeksForGeeks>
The ei-transitiivisuus ominaisuus koskee myös taulukoita, koska taulukoita ovat Java-objekteja. Taulukot kanssa viimeinen avainsana kutsutaan myös lopulliset taulukot .
Huomautus: Kuten edellä mainittiin, lopullista muuttujaa ei voi määrittää uudelleen, sillä sen tekeminen aiheuttaa käännösaikavirheen.
Esimerkki 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; } }>
Lähtö:
Muistaa: Kun lopullinen muuttuja luodaan menetelmän/konstruktorin/lohkon sisään, sitä kutsutaan paikalliseksi lopulliseksi muuttujaksi, ja sen on alustettava kerran luomispaikassa. Katso alta ohjelma paikalliselle lopulliselle muuttujalle.
Esimerkki:
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); } }>
Lähtö
20>
Muista nämä keskeiset kohdat ennen kuin jatkat eteenpäin seuraavasti:
- Huomaa ero C++:n välillä konst muuttujat ja Java lopullinen muuttujia. const-muuttujien on oltava C++:ssa määritetty arvo, kun se on ilmoitettu . Javan lopullisille muuttujille se on ei välttämättä kuten näemme yllä olevista esimerkeistä. Lopullinen muuttuja voidaan antaa arvo myöhemmin, mutta vain kerran.
- lopullinen kanssa foreach silmukka : lopullinen, jossa jokainen lausunto on oikeudellinen lausunto.
Esimerkki:
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 + ' '); } }>
Lähtö
1 2 3>
Tulostuksen selitys: Koska i muuttuja menee soveltamisalan ulkopuolelle silmukan jokaisen iteroinnin yhteydessä, se ilmoitetaan uudelleen jokaisessa iteraatiossa, jolloin samaa merkkiä (i) voidaan käyttää edustamaan useita muuttujia.
Esimerkki:
tikka listaJava
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 // ... }>
Lähtö
The value is: 10 Hello, world! Hello! Hello, final!>
Java lopputunnit
Kun luokka on ilmoitettu lopullinen avainsana Javassa, sitä kutsutaan nimellä a viimeinen luokka . Viimeinen luokka ei voi olla laajennettu (peritty) .
Viimeisellä luokalla on kaksi käyttötapaa:
Käyttö 1: Yksi on ehdottomasti estäminen perinnön , koska viimeisiä luokkia ei voida pidentää. Esimerkiksi kaikki Käärekurssit Kuten Kokonaisluku , Kellua jne. ovat viimeisiä luokkia. Emme voi laajentaa niitä.
final class A { // methods and fields } // The following class is illegal class B extends A { // COMPILE-ERROR! Can't subclass A }>
Käyttö 2: Lopullinen käyttö luokkien kanssa on toinen luoda muuttumaton luokka kuten ennalta määritetty merkkijono luokkaa. Luokasta ei voi tehdä muuttumatonta tekemättä siitä lopullista.
Java lopullinen menetelmä
Kun menetelmä on ilmoitettu kanssa lopullinen avainsana, sitä kutsutaan nimellä a lopullinen menetelmä Javassa. Lopullinen menetelmä ei voi olla ohitettu .
The Esine luokka tekee tämän – monet sen menetelmistä ovat lopullisia. Meidän on ilmoitettava menetelmät lopullisella avainsanalla, joille meidän on noudatettava samaa toteutusta kaikissa johdetuissa luokissa.
Kuva: Viimeinen avainsana menetelmällä
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!'); } }>
Javan lopullisen avainsanan edut:
Javan viimeinen avainsana tarjoaa useita etuja, mukaan lukien:
- Muuttumattomuuden varmistaminen: Kun muuttuja tai viittaus on merkitty lopulliseksi, sen arvoa ei voi muuttaa, kun se on määritetty. Tämä auttaa varmistamaan, että tiedot ovat muuttumattomia eikä niitä voida muuttaa vahingossa tai haitallisesti.
- Suorituskyvyn parantaminen : Finaalin käyttö voi joskus parantaa suorituskykyä, koska Java Virtual Machine (JVM) voi optimoida koodia tehokkaammin, kun se tietää, että tiettyjä arvoja tai viittauksia ei voi muuttaa.
- Koodin ymmärtäminen helpommin: Ilmoittamalla muuttujat, menetelmät tai luokat lopullisiksi kehittäjät voivat tehdä koodistaan helpompia ymmärtää ja perustella. Kun arvo tai viittaus merkitään lopulliseksi, on selvää, että se ei muutu, mikä voi yksinkertaistaa koodin analysointia ja virheenkorjausta.
- Koodin uudelleenkäytön edistäminen: Ilmoittamalla menetelmät lopullisiksi kehittäjät voivat estää alaluokkia ohittamasta niitä. Tämä voi auttaa edistämään koodin uudelleenkäyttöä ja vähentämään päällekkäisyyttä, koska alaluokkien on käytettävä emoluokan menetelmän toteutusta.
- Turvallisuuden lisääminen: Finaalin käyttö voi parantaa turvallisuutta estämällä haitallista koodia muuttamasta arkaluonteisia tietoja tai käyttäytymistä.
Kaiken kaikkiaan viimeinen avainsana on hyödyllinen työkalu koodin laadun parantamiseen ja sen varmistamiseen, että tiettyjä ohjelman ominaisuuksia ei voida muuttaa. Ilmoittamalla muuttujat, menetelmät ja luokat lopullisiksi kehittäjät voivat kirjoittaa turvallisempaa, kestävämpää ja ylläpidettävämpää koodia.
Lisää esimerkkejä ja käyttäytymistä lopullisista menetelmistä ja lopullisista luokista , ole hyvä ja katso Käytä lopullista perinnön kanssa. Katso abstrakti javassa artikkelin eroista lopullinen ja abstrakti .
Aiheeseen liittyvä haastattelukysymys (tärkeä): Ero lopullisen, lopullisen ja viimeistelyn välillä Javassa
Johtopäätös
Viimeinen Java-avainsana on menetelmä käyttäjärajoitteisten muuttujien, menetelmien tai luokkien tekemiseen. Tässä opetusohjelmassa käsittelemme Javan viimeisen avainsanan yksityiskohtaisesti ja ymmärrämme sen kaikki kontekstit.
Kontekstit on selitetty Java-ohjelmilla esimerkeissä, mikä antaa täydellisen ymmärryksen aiheesta.
Java lopullinen avainsana – UKK
Mikä on lopullinen menetelmä Javassa?
Javan viimeinen menetelmä on menetelmä, joka on ilmoitettu kanssa viimeinen avainsana , mikä tarkoittaa, että sen toteutusta ei voi ohittaa alaluokilla.
Onko lopullinen menetelmä peritty?
Ei, Javassa lopullista menetelmää ei voi periä alaluokka. Tämä tarkoittaa, että alaluokka ei voi ohittaa lopullista menetelmää .
Mikä on lopullinen avainsana ja staattinen avainsana Javassa?
Viimeinen avainsana: Sitä käytetään ilmoittamaan muuttujat, menetelmät tai luokat muuttamattomiksi.
Staattinen avainsana: Sitä käytetään ilmoittamaan luokan jäsenet (muuttujat ja menetelmät), jotka kuuluvat itse luokkaan, eivät yksittäisiä objekteja.
Voimmeko kirjoittaa viimeisen avainsanan merkkijonolla Javassa?
Kyllä, voit ilmoittaa muuttujan lopullisella avainsanalla ja määrittää sille merkkijonon.