Prezentare generală a cuvântului cheie protejat în Java

Cuvintele cheie protejate sunt cuvinte cheie care sunt folosite pentru a restricționa sfera în care pot fi accesate variabila, metoda și constructorii. Este unul dintre tipurile de modificatori de acces în Java. Acestea sunt utilizate pentru a diferenția între sfera metodelor, variabilelor, constructorilor și claselor. Există 4 tipuri de modificatori de acces în Java și sunt:

  1. Cuvânt cheie implicit: pot fi accesate doar în cadrul pachetului și nu pot fi apelate în afara acestuia. După cum sugerează și numele, atunci când nu este menționat un specificator de acces, acesta este automat atribuit ca implicit.
  2. Cuvânt cheie public: pot fi accesate de oriunde în program. Acest lucru înseamnă că poate fi folosit din aceeași clasă sau dintr-o clasă diferită și din același pachet sau dintr-un pachet diferit.
  3. Cuvânt cheie privat: restricționează cuvintele cheie la un nivel superior, nepermițându-le accesarea de oriunde în afara clasei în sine.
  4. Cuvânt cheie protejat: în acest articol, vom afla mai multe despre cuvintele cheie protejate.

Odată ce o variabilă sau o metodă este marcată drept protejată, aceasta poate fi accesată numai prin metodele de mai jos:

  • În cadrul aceleiași clase în care este declarată.
  • Din alte clase care sunt, de asemenea, în același pachet cu clasa declarată.
  • Clasele moștenite de la cel declarat, indiferent de pachetul lor.

Cuvintele cheie protejate sunt ca o combinație de cuvinte cheie atât publice cât și private, deoarece au fost introduse pentru a putea accesa variabilele din afara clasei (ceea ce nu este posibil în cazul cuvintelor cheie private), dar menținând că doar anumite metode pot moșteni aceleași.

Sintaxă

Cuvintele cheie protejate sunt declarate cu cuvântul cheie prefixat acestuia drept „protejat”. Mai întâi declaram cuvântul cheie protejat într-una din clasele numite „MyClass”, ca mai jos:

class MyClass (
protected String name = "Katy";
protected int token= 55;
)
public class SubClass extends MyClass (
public static void main(String() args) (
SubClass obj = new SubClass();
System.out.println(obj.name + "'s token number is: " + obj.token);
)
)

Aici clasa „SubClass” extinde „MyClass” și, prin urmare, cuvântul cheie protejat poate fi folosit aici prin crearea unui obiect al SubClass și prin apelarea variabilelor.

ieşire:

Cuvintele cheie protejate pot fi utilizate doar la nivel de membru, adică clase interioare care sunt declarate în afara unei funcții și care nu sunt statice. Cuvântul cheie protejat este diferit de cel privat, deoarece acestea pot fi accesate în afara unei clase și în subclasa unui alt pachet.

Unele dintre restricțiile de utilizare a cuvintelor cheie protejate sunt:

  • Nu pot fi utilizate pentru declararea claselor protejate.
  • Interfețele nu pot fi declarate protejate.
  • Accesibilitatea în afara pachetului se face numai prin moștenire.
  • Un constructor protejat nu poate fi accesat în afara pachetului prin crearea instanței sale.

Exemple

Să parcurgem câteva exemple în care putem înțelege mai bine conceptul de cuvinte cheie protejate.

1. Apelarea unui cuvânt cheie protejat fără extinderea clasei părinte

Aici încercăm să apelăm la cuvântul cheie din clasa părinte a „pachetului1”. „ProtectedExample2” este creat în „package2” și cuvântul cheie „disp” este numit aici. Dar codul nu va putea accesa cuvântul cheie, deoarece clasa copil nu și-a moștenit valoarea de la clasa principală și va arunca o excepție așa cum este arătat.

Cod:

package com.package1;
public class Example (
protected String disp="Printing message from protected variable from package1";
)
//Create new package as com.package2
//Create new class as ProtectedExample2
package com.package2;
import com.package1.Example;
public class ProtectedExample2 (
public static void main(String() args) (
ProtectedExample2 a=new ProtectedExample2();
System.out.println(a.disp);
)
)

ieşire:

2. Accesarea unei clase protejate

În acest exemplu, încercăm să accesăm clasa „ProtectedExample5” care este protejată. Aceasta provoacă o eroare de compilare.

Cod:

protected class ProtectedExample5 (
void display()
(
System.out.println("Try to access outer protected class");
)
public static void main(String() args) (
ProtectedExample5 p=new ProtectedExample5();
p.display();
)
)

ieşire:

3. Afișarea cuvântului cheie protejat din același pachet, dar clasă diferită

În exemplul de mai jos creăm mai întâi un pachet numit „com.package1” și creăm o clasă nouă cu numele „Exemplu”. Aici declarăm că cuvântul nostru cheie „disp” este protejat. Vom încerca să afișăm acest cuvânt cheie protejat folosind clasa „Exemplu1”. Pentru aceasta, mai întâi trebuie creat un obiect al clasei părinte „Exemplu1” și apoi să se imprime valoarea atribuită cuvântului cheie „disp”.

Cod:

package com.package1;
public class Example (
protected String disp="Printing message from protected variable from package1";
)
class Example1 (
public static void main(String() args) (
Example obj=new Example();
System.out.println(obj.disp);
)
)

ieşire:

4. Afișarea unui cuvânt cheie protejat dintr-un alt pachet

Folosind același cod ca mai sus, vom vedea cum să apelăm cuvântul cheie protejat prin crearea unui pachet diferit „pachet2”. Un cuvânt cheie protejat poate fi accesat numai prin moștenire de la pachetul1, prin urmare „ProtectedExample2” este extins din „Exemplu”. În mod similar cu primul exemplu, trebuie să creăm un obiect al clasei „ProtectedExample2” pentru a accesa cuvântul cheie protejat din pachetul „com.package1”.

Cod:

package com.package2;
import com.package1.Example;
public class ProtectedExample2 extends Example(
public static void main(String() args) (
ProtectedExample2 a=new ProtectedExample2();
System.out.println(a.disp);
)
)

ieşire:

5. Accesarea unei clase protejate prin trecerea la sub-clasă

Aici clasa este declarată protejată în cadrul clasei moștenite „Exemplu5”. De asemenea, o clasă protejată numită „Exemplu” este declarată în afara funcției, dar în același pachet. Când se creează un obiect din „Exemplu5” și se numește clasa protejată „disp ()”, putem observa că metoda suprasolicitată este numită în locul clasei exterioare. Acest lucru se datorează faptului că nu vom putea importa „com.package1” și este clasa „Exemplu”, deoarece nu este vizibil și provoacă o eroare de compilare.

Cod:

//Create a file by Example.java
package com.package1;
class Example
(
protected void disp()
(
System.out.println("Printing from protected class in the outside function");
)
)
//Create a class by the name Example5.java
public class Example5 extends Example (
protected void disp()
(
System.out.println("Accessing the overriden function");
)
public static void main(String() args) (
Example5 exp=new Example5();
exp.disp();
)
)

ieşire:

Importanța cuvântului cheie protejat

  • Aceste cuvinte cheie permit ca clasele sau variabilele lor să fie moștenite de la clasa sa părinte, ceea ce nu este posibil cu un alt cuvânt cheie restricționat, cum ar fi privat.
  • Cuvântul cheie protejat este combinația dintre avantajul cuvântului cheie privat și cel al unui cuvânt cheie public. Acesta elimină dezavantajul cuvântului cheie public potrivit căruia variabila sau clasa pot fi accesate de oriunde în program, restricționând domeniul de aplicare.

Concluzie - Cuvânt cheie protejat în Java

După cum se arată în exemplele de mai sus, alegem cuvinte cheie protejate în funcție de nivelul de acces pe care îl solicităm la nivel de cod. Ele ajută foarte mult în cazurile în care aceeași variabilă sau clasă trebuie accesată din alte metode moștenite din program. O relație părinte-copil este întotdeauna prezentă între clasa părinte și sub-clasele sale care utilizează cuvântul cheie protejat.

Articole recomandate

Acesta este un ghid pentru Cuvinte cheie protejate în Java. Aici vom discuta imaginea de ansamblu, sintaxa și diferite exemple de cuvinte cheie protejate în Java. De asemenea, puteți consulta următoarele articole pentru a afla mai multe -

  1. Încapsulare în Java
  2. Constructor în Java
  3. Întrebări de interviu Java
  4. Suprafață în OOP
  5. Cuvinte cheie Java
  6. Instrumente de implementare Java
  7. Modificatori de acces în PHP
  8. Suprasolicitare în Java
  9. Încapsulare în JavaScript