Johdatus Java-avainsanoihin

Tässä viestissä aiomme tarkastella Java-lopullista avainsanaa. Se on avainsana, jota käytetään Java-kielessä rajoittamaan sen käyttöä tai muihin luokkiin tai muuttujiin tehtäviä muutoksia. Tämän avainsanan avulla sanotaan tulkille, että se ei salli muuttujan tai menetelmän tulevia muutoksia ja käsittelee sitä vakiona. Sitä voidaan käyttää alle 3 skenaariossa: -

  1. Muuttuja: Muuttujan julistaminen lopulliseksi rajoittaa muutoksen viittaamiseen mihin tahansa muuhun arvoon tai viitteeseen.
  2. Menetelmät: Menetelmän julistaminen lopulliseksi rajoittaa menetelmän ohittamista lasten luokissa.
  3. Luokat: Luokan julistaminen lopulliseksi estää luokan perimistä.

Nämä avainsanat on aina suositeltavaa ilmoittaa isoilla kirjaimilla hyvän koodauskäytännön mukaisesti.

Lopullisen avainsanan syntaksi Java-kielellä

Tätä avainsanaa voidaan käyttää alle 3 tapaa: -

1. Muuttuja

Java-muuttujat voidaan julistaa muuttujiksi, jotta muutokset rajoitetaan sen arvoihin. Se voidaan ilmoittaa jollain alla kolmesta tapaa-

Syntaksi:

final int VAR1=21;//final variable
final int VAR2; //blank final variable
static final double DUMMY= 45.504;//final static variable
static final double PK;//blank final static variable

Huomautus - Viitemuuttujat voidaan myös julistaa staattisiksi, jotta ne eivät voi pitää viittausta toiseen objektiin. Mutta objektin sisäisestä luonteesta johtuen viittausta voidaan muuttaa.

lopullinen merkkijonorakentaja sb = uusi StringBuilder (“LetsLearn”);

2. Menetelmät

Lopullisella avainsanalla ilmoitetun menetelmän sanotaan olevan lopullinen menetelmä. Lastenluokka ei voi ohittaa lopullista menetelmää, mikä tarkoittaa, että lastenluokan menetelmä ei voi muuttaa vanhemmaluokassa esiintyvän lopullisen menetelmän määritelmää. Kun haluamme vanhemmissa luokissa määritellyn menetelmän toteuttamista kaikissa lasten luokissa, meidän on julistettava menetelmä lopulliseksi.

Syntaksi:

final int my1()(
//method defination
)

3. luokat

Lopullisia avainsanoja voidaan käyttää luokkien kanssa myös siitä, että siitä tulee lopullinen luokka, mikä tarkoittaa sitä, että tiettyä luokkaa ei voida jatkaa tai periä muilla luokilla.

Syntaksi:

final class myClass(
/member variables and member functions.
)

Kuinka lopullinen avainsana toimii Java-versiossa?

Viimeinen avainsana auttaa rajoittamaan luokkien, jäsenten tai muuttujien ohittamista perimisen aikana.

1. Lopulliset muuttujat

Muuttujan julistaminen lopulliseksi tarkoittaa muutoksen rajoittamista muuttujan arvoon periytyneissä luokissa. Lopullinen muuttuja voidaan alustaa vain kerran ja sitä on käytettävä sellaisenaan, joten lopullinen muuttuja on alustettava. Sitä käytetään enimmäkseen staattisen kanssa vakion luokan muuttujan luomiseksi.

Esimerkiksi:

final int a =0;

Voimme myös julistaa viitemuuttujat lopullisiksi, myös tässä tapauksessa yksi viitemuuttuja ei voi viitata erilaisiin objekteihin. Mutta Java-tilassa objektin sisäinen tila voidaan muuttaa, johon lopullinen viitemuuttuja viittaa. Siten voimme tehdä muutoksia vertailumuuttujan arvoon. Tämä on sama kuin lopullisten taulukkojen käyttäminen, kuten alla on esitetty: -

Koodi:

class MyClass
(
public static void main(String args())
(
final int myarr() = (1, 2, 3, 4, 5);
for (int q = 0; q < myarr.length; q++)
(
myarr (q) = myarr (q)*10;
System.out.println(myarr (q));
)
)
)

lähtö:

Selitys

Tässä taulukko a1 viittaa samaan objektiin, vain sen objektin arvo muuttuu, koska me kaikki tiedämme, että taulukon muuttuja sisältää vain sen muistipaikan aloitusosoitteen, johon taulukon nämä elementit on tallennettu.

Ja samalla, jos yritämme viitata erilaiseen taulukkoon käyttämällä samaa taulukomuuttujaa a1, kääntäjä heittää virheen. Siten käyttämällä sana-lopullista taulukkoa tässä tarkoittaa, että taulukon jäsenelle voidaan tehdä muutoksia, mutta muuttujan ei sallita viitata mihinkään muuhun kohteeseen.

Muistettavat asiat

Lopullisen muuttujan alustaminen on välttämätöntä käännösajan virheen estämiseksi. C ++ -standardimuuttujilla on ero, ja näiden lopullisten muuttujien välillä, että const-muuttujia ei tarvitse alustaa. On kolme tapaa alustaa lopullinen muuttuja-

  • Alusta itse ilmoittamishetkellä : Voimme julistaa lopullisen muuttujan helposti ilmoittaessaan sen. Jos sitä ei alusteta, kyseistä muuttujaa pidetään tyhjänä lopullisena muuttujana, ja jompikumpi seuraavista 2 tavasta voi auttaa meitä alustamaan tyhjän lopullisen muuttujan.
  • Esimerkki-alustuslohkon käyttäminen : Tämän lohkon tai rakentajan sisällä tyhjä lopullinen muuttuja voidaan helposti alustaa. Kun käytät konstruktoria alustamiseen, muista aina alustaa tietty muuttuja kaikissa käytettävissä olevissa konstruktoreissa.
  • Staattinen lohko: Staattista lohkoa voidaan käyttää myös tyhjän lopullisen muuttujan alustamiseen. Staattinen lohko laukaistaan ​​aina kerran jokaiselle luokalle, joten muuttujan arvo, jonka arvoja ei ole tarkoitettu muuttamaan, voidaan helposti alkaa käyttämällä tätä lohkoa.

Siksi lopullista avainsanaa käytetään vain niille muuttujille, joiden ei tarvitse muuttaa arvoaan ohjelman suorittamisen aikana. Kaikki menetelmän tai lohkon sisällä luodut lopulliset muuttujat on alustettava sinne itse. Tällaisia ​​tyyppimuuttujia kutsutaan paikallisiksi lopullisiksi muuttujiksi.

Selitys

Alla olevassa esimerkissä muuttuja i on ilmoitettu pääfunktion sisällä ja alustettu myös, joten sitä pidetään lopullisena paikallisena muuttujana.

Koodi:

class myClass
(
public static void main(String args())
(
// local final variable
final int i;
i = 20;
System.out.println(i);
)
)

lähtö:

2. Lopullinen menetelmä

Lopulliseksi julistettua menetelmää ei voida ohittaa missään alaluokassa, joten sitä kutsutaan lopulliseksi menetelmäksi. Menetelmä on julistettava lopulliseksi, jos vaadimme, että lastenluokkia noudatetaan samaa luokan toteutusta.

Huomautus - Ei ole välttämätöntä, että lopulliset menetelmät ilmoitetaan perintövaiheessa (perusluokka). Menetelmä voidaan julistaa lopulliseksi missä tahansa alaluokassa, jonka haluamme muiden alaluokkien noudattavan samaa määritelmää.

Koodi:

class A(
void myMethod()(
//method definition
)
)
class B extends A(
final void myMethod()(
//overrides the method in parent class
//runs successfully
)
)
class C extends B(
void myMethod()(
//will throw error
)
)

3. Viimeinen luokka

Lopullisiksi julistettuja luokkia ei voida periä muilla luokilla. Viimeisen avainsanan mainitseminen ennen luokan nimeä kertoo kääntäjälle, että luokan määritelmää voidaan käyttää vain sellaisenaan. Mikään muu luokka ei voi lisätä määritelmäänsä määritelmään tai käyttää koodia uudelleen. Jos lopullista luokkaa yritetään pidentää, kääntäjä heittää virheen, joka osoittaa, että tätä luokkaa ei ole tarkoitus pidentää. Javassa voidaan käyttää lopullisia avainsanoja missä tahansa alle 2 tarkoitukseen: -

  1. Ensimmäinen on estää kyseisen luokan periminen. Esimerkiksi - kaikki läsnä olevat Wrapper-luokat java.lang-paketti ovat lopullisia luokkia, joten emme voi jatkaa niitä luokissaan, mutta voimme käyttää sitä julistamalla heidän esineensä. Jokainen yritys käyttää näitä luokkia johtaa kääntäjän virheeseen.

final class myParentClass
(
// member variables and member functions
)
// illegal extend.
class myChildClass extends parentClass
(
// Can't subclass A
)

  1. Toinen finaalin käyttö luokkien kanssa on silloin, kun on luotava muuttumaton luokka, ts. Kun luokan objekti on luotu, emme voi muuttaa sen sisältöä kuten ennalta määritelty merkkijono. Luokka on julistettava lopulliseksi, jotta se olisi muuttumaton.

Huomautus :

  • Jos luokka julistetaan lopulliseksi, kääntäjä pitää myös sen jäsenmuuttujia ja jäsentoimintoja lopullisena.
  • Luokkaa ei voida julistaa abstraktiksi, jos määritelmän loppuun saattaminen on riippuvaista lapsiluokista ja lopullinen, joka estää itse perintöä.

Esimerkkejä Java-lopullisesta avainsanasta

Alla on erilainen esimerkki Java-lopullisesta avainsanasta:

1. Lopullisen muuttujan käyttö

Seuraavassa esimerkissä eri muuttujat alustetaan eri menetelmillä. Esimerkiksi - toinen muuttuja alustetaan konstruktorilla, kun taas KOLMAS alustetaan käyttämällä alustinta.

Koodi:

class myClass
(
final int FIRST = 5;
// a blank final variable
final int SECOND;
// another blank final variable
final int THIRD;
FIRST =10; //illegal attempt to change the value of final variable
// a final static variable PI
// direct initialize
static final double MINVALUE = 3.141592653589793;
// a blank final static variable
static final double MAXRANGE;
(
THIRD = 25; // initializer block
)
static(
MAXRANGE = 200.3;
)
public myClass()
(
SECOND = -1;//needs to be initialised in every constructor
)
)

lähtö:

2. Lopullisten menetelmien käyttö

Alla olevassa esimerkissä abstrakti luokka myShape julistaa lopulliset menetelmät getWidth ja saada kahdeksan niitä, joita ei tarvitse peruuttaa luokkiin. Se julistaa myös yhden abstraktin funktion, jonka toteuttaminen on pakollista seuraavissa luokissa. Siten ainoa abstraktin funktion määritelmä toteutetaan ensimmäisessä ja toisessa lasten luokassa.

Koodi:

abstract class myShape
(
private double width;
private double height;
public myShape(double width, double height)
(
this.width = width;
this.height = height;
)
public final double getWidth() //override not allowed
(
return width;
)
public final double getHeight() //override not allowed
(
return height;
)
abstract double getArea(); //needs to be defined in the child class
)
class firstChildClass extends myShape
(
public firstChildClass(double width, double height)
(
super(width, height);
)
final double getArea()
(
return this.getHeight() * this.getWidth();
)
)
class secondChildClass extends myShape
(
public secondChildClass(double side)
(
super(side, side);
)
final double getArea()
(
return this.getHeight() * this.getWidth();
)
)
public class myClass
(
public static void main(String() args)
(
myShape s1 = new firstChildClass(10, 20);
myShape s2 = new secondChildClass(10);
System.out.println("width of s1 : "+ s1.getWidth());
System.out.println("height of s1 : "+ s1.getHeight());
System.out.println("width of s2 : "+ s2.getWidth());
System.out.println("height of s2 : "+ s2.getHeight());
System.out.println("area of s1 : "+ s1.getArea());
System.out.println("area of s2 : "+ s2.getArea());
)
)

lähtö:

3. Loppuluokkien käyttö

Alla olevassa ohjelmassa käytämme lopullista luokkaa Kiinteä, joka määrittelee menetelmän muodon laskemiseksi sen mittojen mukaan, mutta ruudun tilavuuden näyttäminen tapahtuu käyttämällä printVol-toimintoa perinnöllisessä luokassa. Shape As Solid on lopullinen luokka, joten luokan muoto ei saa jatkaa (tai periä) sitä. Siten se käyttää muotoa Object laskemaan minkä tahansa muodon tilavuus siirtämällä argumentit vain funktioille.

Koodi:

final class Solid (
public double getVol(double length, double width, double height) (
return length * width * height;
)
)
class Shape (
private float length;
private float width;
private float height;
Shape(float length, float width, float height) (
this.length = length;
this.width = width;
this.height = height;
)
public void printVol(Solid bObj) (
double volume = bObj.getVol(this.length, this.width, this.height);
System.out.println("Volume of the Shape: " + volume);
)
)
public class myClass (
public static void main(String() args) (
Solid bObj = new Solid();
Shape obj = new Shape(5, 4, 3);
obj.printVol(bObj);
)
)

lähtö:

johtopäätös

Lopullista avainsanaa käytetään estämään luokat, muuttujat ja menetelmät, joita sen alaluokat ohittavat. Sitä voidaan käyttää myös luokkien muuttamiseen muuttumattomiksi, mikä rajoittaa objektien arvon muutosta. Viimeinen avainsanatarkistus tarkistetaan aina vain kokoamisaikana. Se on hyvä apu estämään määriteltyjen muuttujien, logiikan ja luokkien uudelleenkäyttö.

Suositellut artikkelit

Tämä on opas esimerkkiin Java-lopullisesta avainsanasta. Tässä keskustellaan siitä, kuinka lopullinen avainsana toimii javassa? joka sisältää lopulliset muuttujat, lopulliset menetelmät, lopulliset luokat yhdessä syntaksin kanssa. Voit myös katsoa seuraavia artikkeleita saadaksesi lisätietoja -

  1. Java-JComponent-tyyppiset tyypit ja muokkaimet
  2. Java 8: n uudet ominaisuudet
  3. Kuinka luoda objekti JavaScriptiin?
  4. Mikä on oikeuskäytäntö JavaScriptissä?
  5. Heitä vs heittää | 5 suosituinta eroa, jotka sinun pitäisi tietää
  6. Abstraktin luokan julistaminen esimerkissä C #
  7. Tämän avainsanan käyttö ja esimerkit