Introducere în cuvintele cheie finale în Java

În această postare, vom analiza diferitele cuvinte cheie finale pentru java. Este un cuvânt cheie folosit în limbajul java pentru a aplica restricții de utilizare a acestuia sau modificarea de către alte clase sau variabile. Folosind acest cuvânt cheie, unuia îi spune interpretului să nu permită nicio modificare viitoare a acelei variabile sau metode și să o trateze ca fiind constantă. Poate fi utilizat cu mai jos de 3 scenarii: -

  1. Variabilă: Declararea unei variabile ca finală restricționează modificarea acesteia la referire la orice altă valoare sau referință.
  2. Metode: Declararea unei metode ca finală restricționează metoda suprasolicitării acestei metode în clasele de copii.
  3. Clasele: declararea unei clase ca finală împiedică moștenirea acelei clase.

Aceste cuvinte cheie sunt întotdeauna recomandate să fie declarate cu majuscule în conformitate cu bune practici de codare.

Sintaxa cuvântului cheie final în Java

Acest cuvânt cheie poate fi utilizat în mai jos de 3 moduri: -

1. Variabilă

Variabilele din java pot fi declarate ca variabile pentru a restricționa orice modificare la valorile sale. Poate fi declarat în oricare dintre următoarele trei moduri -

Sintaxă:

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

Notă - Variabilele de referință pot fi, de asemenea, declarate statice, astfel încât nu poate reține o referință la un alt obiect. Dar, datorită naturii interne a obiectului, referința poate fi modificată.

final String builder sb = new StringBuilder („LetsLearn”);

2. Metode

Se spune că metoda declarată cu cuvântul cheie final este metoda finală. Metoda finală nu poate fi anulată de clasa sa copil, ceea ce înseamnă că metoda clasei copil nu poate modifica definiția metodei finale prezentă în clasa părinte. Când dorim ca implementarea unei metode definite în clasa părintească să fie urmată în toate clasele sale de copii, atunci trebuie să declaram această metodă ca finală.

Sintaxă:

final int my1()(
//method defination
)

3. clase

Cuvintele cheie finale pot fi, de asemenea, utilizate cu clase pentru a face o clasă finală, ceea ce înseamnă că clasa particulară nu poate fi extinsă sau moștenită de nicio altă clasă.

Sintaxă:

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

Cum funcționează cuvintele cheie finale în Java?

Cuvântul cheie final ajută la restricționarea prescurtării claselor, membrilor sau a variabilelor în timpul moștenirii.

1. Variabile finale

Declararea unei variabile ca finală înseamnă a restricționa orice modificare la valoarea variabilei din clasele moștenite. O variabilă finală poate fi inițiată doar o singură dată și trebuie utilizată așa cum este, deci trebuie inițializată o variabilă finală. Este folosit mai ales cu static pentru a crea o variabilă de clasă constantă.

De exemplu:

final int a =0;

De asemenea, putem declara variabile de referință finale, de asemenea, în acest caz, o variabilă de referință nu se poate referi la obiecte diferite. Dar în java, starea internă a unui obiect poate fi modificată la care este trimisă variabila de referință finală. Astfel putem face modificări la valoarea variabilei de referință. La fel se folosește matricile finale așa cum se arată mai jos: -

Cod:

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

ieşire:

Explicaţie

Aici tabloul a1 se referă la același obiect, doar valoarea acelui obiect se schimbă, deoarece știm cu toții că variabila tabloului conține doar adresa de pornire a locației de memorie în care sunt stocate acele elemente ale tabloului.

Și în același lucru, dacă încercăm să facem referire la o matrice diferită folosind aceeași variabilă a1 a tabloului, atunci compilatorul va arunca o eroare. Astfel, folosind matricea cuvântului final aici înseamnă că orice modificare poate fi făcută membrului tabloului, dar variabila nu are voie să trimită niciun alt obiect.

Lucruri de amintit

Inițializarea unei variabile finale este necesară pentru a preveni erorile în timp de compilare. Există o diferență între variabilele C ++ const și aceste variabile finale, care nu necesită inițializarea variabilelor const. Există trei moduri de inițializare a unei variabile finale -

  • Inițializează la momentul declarației în sine : Putem declara cu ușurință o variabilă finală în momentul declarării acesteia. În cazul în care nu este inițializată, atunci acea variabilă este considerată o variabilă finală goală și oricare dintre următoarele două moduri ne poate ajuta să inițiem o variabilă finală goală.
  • Utilizarea blocului de inițializare a instanțelor : în interiorul acestui bloc sau al constructorului, o variabilă finală goală poate fi ușor inițiată. În timp ce utilizați un constructor pentru inițializare, amintiți-vă întotdeauna să inițializați variabila specifică în toți constructorii disponibili.
  • Bloc static: se poate utiliza de asemenea un bloc static pentru inițializarea variabilei finale necompletate. Blocul static este întotdeauna declanșat o singură dată pentru fiecare clasă, astfel încât valoarea variabilă ale cărei valori nu sunt destinate a fi modificate poate fi ușor inițiată cu acest bloc.

Astfel, cuvântul cheie final este utilizat doar pentru acele variabile care nu trebuie să își schimbe valoarea în timpul executării programului. Toate variabilele finale create în interiorul unei metode sau blocuri trebuie inițializate acolo. Astfel de variabile de tip sunt cunoscute sub numele de variabile finale locale.

Explicaţie

În exemplul de mai jos, o variabilă i a fost declarată în funcția principală și inițializată, de asemenea, este considerată ca o variabilă locală finală.

Cod:

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

ieşire:

2. Metode finale

O metodă declarată finală nu poate fi anulată în niciuna dintre subclase, numită astfel metodă finală. Metoda trebuie declarată finală dacă solicităm ca aceeași implementare a clasei să fie urmată de clasele pentru copii.

Notă - Nu este necesar ca metodele finale să fie declarate în stadiul inițial al moștenirii (clasa de bază). Metoda poate fi declarată finală în orice subclase pe care dorim ca alte subclase să urmeze aceeași definiție.

Cod:

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. Clasele finale

Clasele declarate finale nu pot fi moștenite de alte clase. Menționarea unui cuvânt cheie final înainte de numele clasei spune compilatorului că definiția acestei clase poate fi utilizată doar așa cum sunt. Nicio altă clasă nu își poate adăuga specificațiile la această definiție sau reutiliza codul ei. În cazul în care se încearcă extinderea clasei finale, compilatorul aruncă o eroare care indică faptul că această clasă nu este destinată să fie extinsă. Puteți utiliza cuvinte cheie finale în java în oricare dintre următoarele două scopuri: -

  1. Prima este de a preveni moștenirea acelei clase. De exemplu, toate clasele Wrapper prezente pachetul java.lang sunt clase finale, pentru care nu le putem extinde în clasele noastre, dar îl putem folosi declarând obiectele lor. Orice încercare făcută pentru a accesa acele clase va duce la o eroare a compilatorului.

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

  1. A doua utilizare a finalului cu clasele este atunci când trebuie să creăm o clasă imuabilă, adică odată ce obiectul clasei este creat, nu putem schimba conținutul său precum clasa String predefinită. Clasa trebuie declarată finală pentru a o face imuabilă.

Notă :

  • Dacă o clasă este declarată finală, atunci compilatorul variabilele sale de membru și funcțiile de membru sunt de asemenea considerate finale de compilator.
  • O clasă nu poate fi declarată abstractă atunci când este dependentă de clasele copilului pentru a-și completa definiția, precum și finală, care împiedică moștenirea în sine.

Exemple de Cuvinte cheie finale în Java

Mai jos este diferitul exemplu de cuvânt cheie final în Java sunt:

1. Utilizarea variabilei finale

În exemplul de mai jos, diferite variabile sunt inițializate folosind diferite metode. De exemplu, variabila SECOND este inițializată folosind un constructor, în timp ce THIRD este inițializată folosind un inițiator.

Cod:

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

ieşire:

2. Utilizarea metodelor finale

În exemplul de mai jos, clasa abstractă myShape declară metodele finale getWidth și obține opt care nu trebuie să fie suprasolicitate de clasele moștenite. De asemenea, declară o funcție abstractă a cărei implementare este obligatorie în clasele următoare. Astfel, singura definiție a unei funcții abstracte este implementată într-o primă clasă pentru copii, precum și în a doua clasă pentru copii.

Cod:

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

ieşire:

3. Utilizarea claselor finale

În programul de mai jos, folosim o clasă finală Solid care definește o metodă pentru a calcula volumul unei forme utilizând dimensiunile acesteia, dar afișarea volumului unei cutii se face folosind funcția printVol din clasa moștenită. Forma As Solid este o clasă finală, astfel clasa Forma nu va avea voie să o extindă (sau să o moștenească). Astfel, folosește obiectul Shape pentru a calcula volumul oricărui din Shape, trecând doar argumentele la funcții.

Cod:

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

ieşire:

Concluzie

Cuvântul cheie final este utilizat pentru a împiedica clasele, variabilele și metodele să fie ignorate de clasele sale de copii. Poate fi, de asemenea, utilizat pentru a face imuabile clasele care restricționează schimbarea valorii obiectelor sale. Verificarea finală a cuvintelor cheie este întotdeauna verificată doar la compilare. Este o utilitate excelentă pentru a preveni reutilizarea variabilelor, logicii și claselor definite.

Articole recomandate

Acesta este un ghid pentru un exemplu de cheie finală în Java. Aici discutăm cum funcționează cuvântul cheie final în Java? care include variabile finale, metode finale, clase finale împreună cu sintaxa. De asemenea, puteți consulta următoarele articole pentru a afla mai multe -

  1. Tipuri și modificatori folosiți pentru JComponent în Java
  2. Caracteristici noi ale Java 8
  3. Cum se creează un obiect în JavaScript?
  4. Ce este declarația de caz în JavaScript?
  5. Aruncă vs Aruncă | Top 5 diferențe pe care ar trebui să le știi
  6. Declarând clasa abstractă în C # cu exemplu
  7. Utilizări și exemple ale acestui cuvânt cheie