Kaitstud märksõna ülevaade Java-s

Kaitstud märksõnad on märksõnad, mida kasutatakse muutujale, meetodile ja konstruktoritele juurdepääsu ulatuse piiramiseks. See on üks Java juurdepääsu modifikaatorite tüüpe. Neid kasutatakse meetodite, muutujate, konstruktorite ja klasside ulatuse eristamiseks. Java-vormingus on 4 tüüpi juurdepääsu modifikaatoreid ja need on:

  1. Vaikimisi märksõna: neile pääseb juurde ainult paketi sees ja neid väljaspool seda nimetada ei saa. Nagu nimigi ütleb, siis kui ühtegi juurdepääsu täpsustajat ei mainita, omistatakse see automaatselt vaikimisi.
  2. Avalik märksõna: neile pääseb juurde kõikjal programmis. See tähendab, et seda saab kasutada samast või teisest klassist ning samast või teisest pakendist.
  3. Privaatne märksõna: need piiravad märksõnu kõrgemale tasemele, lubades neile juurdepääsu mujalt kui klassist.
  4. Kaitstud märksõna: selles artiklis tutvume lähemalt kaitstud märksõnadega.

Kui muutuja või meetod on kaitstud märgistatud, pääseb sellele juurde ainult järgmiste meetoditega:

  • Samas klassis, kus see on deklareeritud.
  • Muudest klassidest, mis on samuti deklareeritud klassiga samas pakendis.
  • Klassid, mis on päritud deklareeritud klassist, olenemata pakendist.

Kaitstud märksõnad on nagu nii avalike kui ka privaatsete märksõnade kombinatsioon, kuna need võeti kasutusele selleks, et pääseda juurde muutujatele väljaspool klassi (mis pole privaatsete märksõnade puhul võimalik), kuid väites, et ainult teatud meetodid võivad pärida sama.

Süntaks

Kaitstud märksõnad kuulutatakse koos sellele lisatud märksõnaga kaitstud märksõnadeks. Esmalt kuulutame kaitstud märksõna ühes klassis, mille nimi on “MyClass”, nagu allpool:

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

Siin laieneb klass “alamklass” “MyClass” ja seega saab kaitstud märksõna siin kasutada alamklassi objekti loomise ja muutujate kutsumise teel.

Väljund:

Kaitstud märksõnu saab kasutada ainult liikme tasemel, st sisemised klassid, mis on deklareeritud väljaspool funktsiooni ja mis on mittestaatilised. Kaitstud märksõnad erinevad privaatsetest märksõnadest, kuna neile pääseb juurde väljaspool klassi ja mõne teise paketi alaklassis.

Mõned kaitstud märksõnade kasutamise piirangud on järgmised:

  • Neid ei saa kasutada klasside kaitstuks kuulutamiseks.
  • Liideseid ei saa kuulutada kaitstuks.
  • Juurdepääs väljaspool pakki toimub ainult pärimise kaudu.
  • Kaitstuks muudetud konstruktorile ei saa selle eksemplari loomisega paketist välja pääseda.

Näited

Vaatame läbi mõned näited, kus mõistame paremini kaitstud märksõnade mõistet.

1. Kaitstud märksõna kutsumine ilma vanemklassi laiendamata

Proovime siin nimetada märksõna vanemate klassi “package1”. “ProtectedExample2” luuakse paketis “pakett2” ja siin nimetatakse märksõna “displa”. Kuid kood ei pääse märksõnale juurde, kuna lasteklass ei ole selle väärtust põhiklassilt pärinud ja loobub erandist, nagu näidatud.

Kood:

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

Väljund:

2. Juurdepääs kaitstud klassile

Selles näites proovime pääseda kaitstud klassi “ProtectedExample5”. See põhjustab kompileerimisvea.

Kood:

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

Väljund:

3. Kaitstud märksõna kuvamine samast paketist, kuid erinevast klassist

Allpool toodud näites loome kõigepealt paketi nimega “com.package1” ja loome uue klassi nimega “Näide”. Siinkohal kuulutame, et meie märksõna “disp” on kaitstud. Proovime seda kaitstud märksõna kuvada, kasutades klassi “Näide1”. Selleks tuleb kõigepealt luua vanemklassi objekt “Näide1” ja printida märksõnale “Dis” määratud väärtus.

Kood:

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

Väljund:

4. Kaitstud märksõna kuvamine teisest paketist

Kasutades sama koodi nagu ülal, näeme, kuidas kaitstud märksõna kutsuda, luues teistsuguse paketi “pack2”. Kaitstud märksõnale pääseb juurde ainult paketilt 1 pärimise kaudu, seega laiendatakse jaotist „ProtectedExample2” jaotist „Näide”. Esimese näitega sarnasel viisil peame looma klassi „ProtectedExample2” objekti, et pääseda juurde kaitstud märksõnale pakendist „com.package1”.

Kood:

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

Väljund:

5. Juurdepääs kaitstud klassile, ületades selle alamklassile

Siin kuulutatakse klass kaitstuks päritud klassis “Näide 5”. Ka kaitstud klass nimega “Näide” kuulutatakse väljaspool funktsiooni, kuid samas paketis. Kui luuakse näite 5 objekt ja kutsutakse kaitstud klass „displa ()“, võime täheldada, et välisklassi asemel nimetatakse ülepakutud meetodit. Selle põhjuseks on asjaolu, et me ei saa importida “com.package1” ja selle klassi “Näide”, kuna see pole nähtav ja põhjustab kompileerimisvea.

Kood:

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

Väljund:

Kaitstud märksõna tähtsus

  • Need märksõnad võimaldavad klasside või nende muutujate pärimist selle vanemklassilt, mis pole ühegi teise piiratud märksõna (nt privaatne) korral võimalik.
  • Kaitstud märksõna on privaatse ja avaliku märksõna eelise kombinatsioon. See välistab avaliku märksõna miinuse, et muutuja või klass on juurdepääsetav kõikjal programmis, piirates rakendusala.

Järeldus - kaitstud märksõna Java-s

Nagu ülaltoodud näidetes näidatud, valime kaitstud märksõnad sõltuvalt juurdepääsu tasemest, mida me kooditasandil vajame. Need aitavad suuresti juhtudel, kui samale muutujale või klassile on vaja juurde pääseda programmi muudelt päritud meetoditelt. Vanema ja lapse suhe on alati olemas vanema klassi ja selle alamklasside vahel, kus kasutatakse kaitstud märksõna.

Soovitatavad artiklid

See on Java kaitstud märksõnade juhend. Siin käsitleme javas kaitstud märksõnade ülevaadet, süntaksit ja erinevaid näiteid. Lisateabe saamiseks võite vaadata ka järgmisi artikleid -

  1. Kapseldamine Java-s
  2. Konstruktor Java
  3. Java-intervjuu küsimused
  4. OOPides ülimuslik
  5. Java märksõnad
  6. Java juurutustööriistad
  7. Juurdepääs modifikaatoritele PHP-s
  8. Ülekaalus Java
  9. Kapseldamine JavaScripti

Kategooria: