Uvod u završnu riječ na Javi

U ovom postu ćemo istražiti različite završne ključne riječi za javu. To je ključna riječ koja se koristi u java jeziku za primjenu ograničenja u njezinoj upotrebi ili izmjenama od strane drugih klasa ili varijabli. Upotrebom ove ključne riječi jedan govori tumaču da ne dozvoljava nikakve buduće izmjene te varijable ili metode i tretira je kao konstantnu. Može se koristiti sa ispod 3 scenarija: -

  1. Promjenjiva: Proglašavanje varijable konačnom ograničava njezinu promjenu da bi se odnosilo na bilo koju drugu vrijednost ili referencu.
  2. Metode: Proglašavanje metode konačnom ograničava prevladavanje metode u dječjim razredima.
  3. Klase: Proglašavanje klase konačnom sprječava nasljeđivanje te klase.

Ove se ključne riječi uvijek preporučuju izjaviti velikim slovima u skladu s dobrim praksama kodiranja.

Sintaksa završne ključne riječi u Javi

Ova se ključna riječ može koristiti na tri načina: -

1. promjenljiva

Varijable u javi mogu se deklarirati kao varijable kako bi se ograničila svaka promjena njegovih vrijednosti. Može se proglasiti na bilo koji od tri tri načina-

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

Napomena - Referentne varijable također se mogu proglasiti statičkim tako da ne može imati referencu na drugi objekt. Ali zbog unutarnje prirode objekta reference se mogu mijenjati.

final String builder sb = new StringBuilder ("LetsLearn");

2. Metode

Kaže se da je metoda deklarirana s konačnom ključnom riječi konačna metoda. Konačnu metodu ne može nadjačati njegova nadređena klasa, što znači da metoda razreda djece ne može promijeniti definiciju konačne metode prisutne u roditeljskoj klasi. Kad želimo da se primijeni metoda definirana u roditeljskoj klasi mora slijediti u svim svojim dječjim klasama, tada moramo tu metodu proglasiti konačnom.

Sintaksa:

final int my1()(
//method defination
)

3. Razredi

Konačne ključne riječi također se mogu koristiti s klasama, kako bi konačna klasa značila da se klasa ne može proširiti ili naslijediti nijedna druga klasa.

Sintaksa:

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

Kako konačna ključna riječ djeluje u Javi?

Konačna ključna riječ pomaže ograničiti prevladavanje klasa, članova ili varijabli tijekom nasljeđivanja.

1. Konačne varijable

Proglašavanje varijable konačnom znači ograničavanje bilo kakve promjene vrijednosti varijable u naslijeđenim klasama. Konačna varijabla može se inicijalizirati samo jednom i mora se koristiti onakvom kakva jest, te stoga mora inicijalizirati konačnu varijablu. Najčešće se koristi statičkim za stvaranje konstantne varijable klase.

Na primjer:

final int a =0;

Također referentne varijable možemo proglasiti konačnim, u ovom slučaju se jedna referentna varijabla ne može odnositi na različite objekte. Ali u Javi se može promijeniti unutarnje stanje objekta koje upućuje konačna referentna varijabla. Na taj način možemo izvršiti promjene u vrijednosti referentne varijable. To je isto kao i pomoću završnih nizova kao što je prikazano u nastavku: -

Kodirati:

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

Izlaz:

Obrazloženje

Ovdje se niz a1 odnosi na isti objekt samo vrijednost tog objekta se mijenja jer svi znamo da varijabla matrice sadrži samo početnu adresu memorijske lokacije u kojoj su ti elementi matrice pohranjeni.

I na isti način, ako pokušamo uputiti različitu matricu koristeći istu varijablu array a1, tada će prevoditelj pogrešku baciti. Prema tome, korištenjem riječi završni niz ovdje znači da se svaka promjena može izvršiti članu matrice, ali varijabli nije dopušteno pozivanje na bilo koji drugi objekt.

Stvari koje treba zapamtiti

Inicijalizacija konačne varijable potrebna je kako bi se spriječila pogreška u vremenu sastavljanja. Postoji razlika između C ++ const varijabli i ovih konačnih varijabli koje const varijable ne moraju biti inicijalizirane. Postoje tri načina inicijalizacije konačne varijable -

  • Inicijalizirajte se u vrijeme same deklaracije : Lako možemo deklarirati konačnu varijablu u trenutku njenog proglašavanja. U slučaju da se nije inicijalizirala, ta se varijabla smatra praznom konačnom varijablom, a bilo koji od sljedeća 2 načina može nam pomoći u inicijalizaciji prazne konačne varijable.
  • Korištenje bloka inicijalizatora instance : Unutar ovog bloka ili konstruktora, prazna konačna varijabla može se lako inicijalizirati. Dok koristite konstruktor za inicijalizaciju, uvijek se sjetite kako inicijalizirati određenu varijablu u svim dostupnim konstruktorima.
  • Statički blok: Može se koristiti i statički blok za inicijalizaciju prazne konačne varijable. Statički blok se uvijek aktivira jednom za svaku klasu, pa se varijabilna vrijednost, čija se vrijednost ne želi mijenjati, lako inicijalizira pomoću ovog bloka.

Tako se konačna ključna riječ koristi samo za onu varijablu koja ne mora mijenjati svoju vrijednost tijekom izvođenja programa. Sve konačne varijable stvorene unutar metode ili bloka moraju se tamo inicijalizirati same. Takve varijable tipa su poznate kao lokalne konačne varijable.

Obrazloženje

U primjeru u nastavku, varijabla i je deklarirana unutar glavne funkcije i inicijalizirana se također smatra konačnom lokalnom varijablom.

Kodirati:

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

Izlaz:

2. Završne metode

Metoda koja je proglašena konačnom ne može se preglasiti u nijednoj potklasi, a tako se naziva konačnom metodom. Metodu je potrebno proglasiti konačnom ako zahtijevamo da istu nastavu slijede i razredi djece.

Napomena- Nije neophodno da se konačne metode deklariraju u početnoj fazi nasljeđivanja (osnovna klasa). Metoda se može proglasiti konačnom u bilo kojem podrazredu za koji želimo da i drugi podrazredi slijede istu definiciju.

Kodirati:

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. Završna nastava

Klase koje su proglašene završnim ne mogu se naslijediti nijedne druge klase. Spominjanje završne ključne riječi prije naziva klase upućuje prevoditelju da se definicija ove klase može koristiti samo onakvom kakva jest. Nijedna druga klasa ne može dodati svoje specifikacije ovoj definiciji ili ponovno upotrijebiti njezin kod. U slučaju ako pokušate proširiti finalnu klasu, prevoditelj baca pogrešku koja označava da se ta klasa ne želi proširiti. Konačne ključne riječi u Javi mogu se koristiti u bilo koje za manje od 2 svrhe: -

  1. Prvo je spriječiti nasljedstvo te klase. Npr. - sve klase Wrapper prisutne u paketu java.lang su završne klase za koje ih ne možemo proširiti u svojim klasama, ali možemo ih koristiti deklariranjem njihovih objekata. Svaki pokušaj pristupa tim klasama prevoditelj će dovesti do pogreške.

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

  1. Druga upotreba final s klasama je kada treba stvoriti nepromjenjivu klasu, tj. Jednom kada se stvori objekt klase, ne možemo promijeniti njegov sadržaj poput unaprijed definirane klase String. Razred se mora proglasiti konačnom kako bi bio nepromjenljiv.

Bilješka :

  • Ako je klasa deklarirana kao konačna, tada sastavljač smatra i konačne varijable i članske funkcije.
  • Razred ne može biti proglašen apstraktnim ako ovisi o dječjim razredima da bi dovršio njegovu definiciju, kao i konačnu, koja sprečava samo nasljeđivanje.

Primjeri završne ključne riječi u Javi

Ispod su različiti primjeri završne ključne riječi na Javi:

1. Korištenje konačne varijable

U primjeru u nastavku različite se varijable inicijaliziraju korištenjem različitih metoda. Na primjer - varijabla SECOND inicijalizira se pomoću konstruktora dok se THIRD inicijalizira pomoću inicijalizatora.

Kodirati:

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

Izlaz:

2. Korištenje konačnih metoda

U primjeru u nastavku, apstraktna klasa myShape izjavljuje konačne metode getWidth i dobivate osam onih koje ne moraju prevladati naslijeđene klase. Također izjavljuje jednu apstraktnu funkciju čija je primjena obvezna u kasnijim razredima. Tako se jedina definicija apstraktne funkcije provodi u prvom dječjem razredu i drugom razredu.

Kodirati:

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

Izlaz:

3. Korištenje završne nastave

U donjem programu koristimo konačnu klasu Solid koja definira metodu za izračunavanje volumena oblika pomoću njegovih dimenzija, ali prikazivanje volumena okvira vrši se primjenom printVol funkcije u naslijeđenom razredu. Shape As Solid je konačna klasa, stoga klasi Shape neće biti dopušteno (ili ga nasljeđivati). Na taj način koristi objekt Oblika za izračunavanje volumena bilo kojeg oblika samo prenošenjem argumenata u funkcije.

Kodirati:

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

Izlaz:

Zaključak

Završna ključna riječ koristi se za sprečavanje klasa, varijabli i metoda koje će njihova preklapanje nadvladati. Također se može koristiti da se klase naprave nepromjenjive što ograničava promjenu vrijednosti njegovih objekata. Konačna provjera ključne riječi uvijek se provjerava samo u vrijeme prevođenja. Odličan je program za sprječavanje ponovne uporabe definiranih varijabli, logike i klasa.

Preporučeni članci

Ovo je vodič za primjer završne ključne riječi na Javi. Ovdje smo raspravljali o tome kako konačna ključna riječ djeluje u Javi? što uključuje konačne varijable, završne metode, završne časove zajedno sa sintaksom. Možete pogledati i sljedeće članke da biste saznali više -

  1. Vrste i modifikatori koji se koriste za JComponent u Javi
  2. Nove značajke Jave 8
  3. Kako stvoriti objekt u JavaScript-u?
  4. Što je Izjava o slučaju u JavaScript-u?
  5. Baciti protiv bacanja | Top 5 razlika koje biste trebali znati
  6. Izjava apstraktne klase u C # s primjerom
  7. Upotrebe i primjeri ove ključne riječi

Kategorija: