Uvod v končno ključno besedo v Javi

V tej objavi bomo pogledali različne končne ključne besede za javo. To je ključna beseda, ki se v jeziku Java uporablja za omejitve uporabe ali spreminjanja v drugih razredih ali spremenljivkah. S to ključno besedo tolmač pove tolmaču, naj ne dovoli nobenih prihodnjih sprememb te spremenljivke ali metode, in ga obravnava kot konstantno. Uporablja se lahko pri treh scenarijih: -

  1. Spremenljivka: Razglasitev spremenljivke kot končne omejuje njeno spremembo in se nanaša na katero koli drugo vrednost ali referenco.
  2. Metode: razglasitev metode za končno omejuje preglasitev metode v otroških razredih.
  3. Razredi: Razglasitev razreda za končnega preprečuje dedovanje tega razreda.

Te ključne besede je vedno priporočljivo izjaviti z velikimi tiskanimi črkami v skladu z dobrimi praksami kodiranja.

Sintaksa končne ključne besede v Javi

To ključno besedo je mogoče uporabiti na tri načine: -

1. Spremenljivka

Spremenljivke v javi lahko razglasimo kot spremenljivke, da omejimo vsako spremembo svojih vrednosti. To je mogoče prijaviti na katerega koli od spodnjih treh načinov-

Sintaksa:

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

Opomba - Referenčne spremenljivke lahko razglasimo tudi za statične, tako da ne morejo imeti reference na drug objekt. Toda zaradi notranje narave se referenca predmeta lahko spremeni.

končni String builder sb = nov StringBuilder ("LetsLearn");

2. Metode

Metoda, deklarirana s končno ključno besedo, naj bi bila končna metoda. Končne metode ne more preglasiti njegov nadrejeni razred, kar pomeni, da metoda otroškega razreda ne more spremeniti definicije končne metode, prisotne v nadrejenem razredu. Ko želimo izvajati metodo, definirano v nadrejenem razredu, v vseh otroških razredih, jo moramo razglasiti za dokončno.

Sintaksa:

final int my1()(
//method defination
)

3. Razredi

Končne ključne besede se lahko uporabljajo tudi pri razredih, tako da postanejo končni razred, kar pomeni, da določenega razreda ni mogoče razširiti ali podedovati noben drug razred.

Sintaksa:

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

Kako končna ključna beseda deluje na Javi?

Končna ključna beseda pomaga omejiti preglasitev razredov, članov ali spremenljivk med dedovanjem.

1. Končne spremenljivke

Razglasitev spremenljivke kot končne pomeni omejitev vsake spremembe vrednosti spremenljivke v podedovanih razredih. Končno spremenljivko je mogoče inicializirati samo enkrat in jo je treba uporabiti takšno, kot je, zato je treba inicializirati končno spremenljivko. Večinoma se uporablja s statično za ustvarjanje konstantne spremenljivke razreda.

Primer:

final int a =0;

Referenčne spremenljivke lahko razglasimo tudi za končne, tudi v tem primeru se ena referenčna spremenljivka ne more sklicevati na različne predmete. Toda v Javi se lahko spremeni notranje stanje predmeta, ki ga napoti končna referenčna spremenljivka. Tako lahko spremenimo vrednost referenčne spremenljivke. To je enako kot uporaba končnih nizov, kot je prikazano spodaj: -

Koda:

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

Izhod:

Pojasnilo

Tu se matrika a1 sklicuje na isti objekt, le vrednost tega predmeta se spreminja, ker vsi vemo, da spremenljivka matrike vsebuje samo začetni naslov pomnilniške lokacije, v kateri so shranjeni ti elementi matrike.

In v istem primeru, če poskušamo napotiti različne matrike z isto spremenljivko matrike a1, bo prevajalnik vrgel napako. Torej z uporabo besedno-končne matrike tukaj pomeni, da je mogoče spremeniti člana matrike, vendar spremenljivka ne sme sklicevati nobenega drugega predmeta.

Stvari, ki jih je treba zapomniti

Inicializacija končne spremenljivke je potrebna, da se prepreči napaka med sestavljanjem. Obstaja razlika med spremenljivkami C ++ const in temi končnimi spremenljivkami, ki jih ni treba inicializirati. Obstajajo trije načini za inicializacijo končne spremenljivke -

  • Inicializirajte se ob sami deklaraciji : Končno spremenljivko zlahka razglasimo ob njeni deklaraciji. V primeru, da ni inicializirana, se ta spremenljivka šteje za prazno končno spremenljivko in kateri koli od naslednjih dveh načinov nam lahko pomaga pri inicializaciji prazne končne spremenljivke.
  • Uporaba bloka inicializatorja primerkov : Znotraj tega bloka ali konstruktorja je mogoče preprosto inicializirati prazno končno spremenljivko. Medtem ko uporabljate konstruktor za inicializacijo, vedno ne pozabite inicializirati določene spremenljivke v vseh razpoložljivih konstruktorjih.
  • Statični blok: Eno lahko uporabite tudi statični blok za inicializacijo prazne končne spremenljivke. Statični blok se vedno sproži enkrat za vsak razred, zato lahko spremenljivo vrednost, katere vrednosti ne želimo spremeniti, enostavno inicializirati s tem blokom.

Končna ključna beseda se torej uporablja samo za tiste spremenljivke, ki jim med izvajanjem programa ni treba spremeniti svoje vrednosti. Vse končne spremenljivke, ustvarjene znotraj metode ali bloka, morajo biti tam inicializirane same. Takšne spremenljivke tipa so znane kot lokalne končne spremenljivke.

Pojasnilo

V spodnjem primeru je bila spremenjena i spremenljivka i v glavni funkciji in je tudi inicializirana kot končna lokalna spremenljivka.

Koda:

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

Izhod:

2. Končne metode

Metode, ki je razglašena za končno, ni mogoče preglasiti v nobenem od podrazredov, zato jo imenujemo kot končno metodo. Metodo je treba razglasiti za dokončno, če zahtevamo, da enaki izvedbi razreda sledijo tudi otroški razredi.

Opomba - Ni nujno, da se končne metode navedejo v začetni fazi dedovanja (osnovni razred). Metodo lahko razglasimo za končno v katerem koli podrazredu, za katerega želimo, da nadaljnji podrazredi sledijo isti definiciji.

Koda:

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. Zaključni razredi

Razredov, proglašenih kot končnih, noben drug razred ne more podedovati. Omemba končne ključne besede pred imenom razreda prevajalcu pove, da je definicijo tega razreda mogoče uporabiti le takšno, kot so. Noben drug razred ne more dodati svojih specifikacij k tej definiciji ali ponovno uporabiti njene kode. V primeru, da poskusite razširiti končni razred, prevajalnik vrne napako, ki kaže, da tega razreda ni mišljeno podaljšati. Končne ključne besede v Javi lahko uporabljate za katere koli pod 2 namena: -

  1. Prvo je preprečiti dedovanje tega razreda. Na primer - vsi paketi Wrapper, ki so prisotni v paketu java.lang, so končni razredi, zato jih v svojih razredih ne moremo razširiti, lahko pa jih uporabimo z deklariranjem njihovih predmetov. Vsak poskus dostopa do teh razredov bo prevajalnik povzročil napako.

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

  1. Druga uporaba final z razredi je, ko je treba ustvariti nespremenljiv razred, ko enkrat ustvari objekt razreda, ne moremo spremeniti njegove vsebine, kot je vnaprej določen razred String. Razred je treba razglasiti za dokončnega, da postane nespremenljiv.

Opomba :

  • Če je razred razglašen za končnega, prevajalnik tudi njegove članske spremenljivke in članske funkcije šteje za dokončne.
  • Razred ni mogoče razglasiti za abstraktnega, če je od otroških razredov dokončno opredeljeno in tako končno, kar preprečuje dedovanje.

Primeri končne ključne besede v Javi

Spodaj je različen primer končne ključne besede v Javi:

1. Uporaba končne spremenljivke

V spodnjem primeru se različne spremenljivke inicializirajo z različnimi metodami. Na primer - spremenljivka SECOND se inicializira s pomočjo konstruktorja, medtem ko se THIRD inicializira s pomočjo inicializatorja.

Koda:

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

Izhod:

2. Uporaba končnih metod

V spodnjem primeru abstraktni razred myShape razglasi končne metode getWidth in dobite jih osem, ki jih podedovani razredi ne smejo preglasiti. Izjavi tudi eno abstraktno funkcijo, katere izvajanje je v naslednjih razredih obvezno. Tako je edina definicija abstraktne funkcije izvedena tako v prvem otroškem razredu kot v drugem otroškem razredu.

Koda:

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

Izhod:

3. Uporaba zaključnih razredov

V spodnjem programu uporabljamo končni razred Solid, ki definira metodo za izračun prostornine oblike po njenih dimenzijah, prikazovanje volumna polja pa se izvede s funkcijo printVol v podedovanem razredu. Shape As Solid je končni razred, zato razreda Shape ne bo dovoljeno razširjati (ali podedovati). S pomočjo predmeta Shape izračuna količino katerega koli Shapeja tako, da argumente samo posreduje funkcijam.

Koda:

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

Izhod:

Zaključek

Končna ključna beseda se uporablja za preprečevanje, da bi njeni nadrejeni razredi preglasili razrede, spremenljivke in metode. Uporabljajo ga lahko tudi za to, da se razredi spremenijo, kar omejuje spreminjanje vrednosti njegovih predmetov. Končno preverjanje ključnih besed se vedno preveri samo v času prevajanja. Odličen pripomoček je, da preprečimo ponovno uporabo opredeljenih spremenljivk, logike in razredov.

Priporočeni članki

To je vodnik za primer Končne ključne besede v Javi. Tukaj razpravljamo, kako končna ključna beseda deluje v javi? ki vključuje končne spremenljivke, končne metode, končne razrede skupaj s skladnjo. Če želite izvedeti več, si oglejte tudi naslednje članke -

  1. Vrste in modifikatorji, ki se uporabljajo za JComponent v Javi
  2. Nove funkcije Java 8
  3. Kako ustvariti predmet v JavaScript?
  4. Kaj je izjava o primeru v JavaScript?
  5. Vrzi proti metanju | Top 5 razlik, ki bi jih morali vedeti
  6. Izjava abstraktnega razreda v C # s primerom
  7. Uporabe in primeri te ključne besede