Oversikt over beskyttet nøkkelord i Java

Beskyttede nøkkelord er nøkkelord som brukes til å begrense omfanget variabelen, metoden og konstruktørene kan nås i. Det er en av typene tilgangsmodifiserere i Java. De brukes til å skille mellom omfanget av metoder, variabler, konstruktører og klasser. Det er fire typer tilgangsmodifiserere i Java, og de er:

  1. Standard nøkkelord: Du får bare tilgang til dem i pakken og kan ikke kalles utenfor den. Som navnet antyder, tildeles ikke automatisk tilgangsspesifikasjon som standard.
  2. Offentlig nøkkelord: Du kan få tilgang til dem hvor som helst i programmet. Dette betyr at den kan brukes fra samme eller en annen klasse og den samme eller en annen pakke.
  3. Privat nøkkelord: De begrenser nøkkelordene til et høyere nivå ved ikke å la dem få tilgang til hvor som helst utenfor klassen.
  4. Beskyttet nøkkelord: I denne artikkelen skal vi lære mer om beskyttede nøkkelord.

Når en variabel eller en metode er merket som beskyttet, kan den bare nås med metodene nedenfor:

  • Inne i samme klasse som det er erklært.
  • Fra andre klasser som også er i samme pakke som den deklarerte klassen.
  • Klasser arvet fra den deklarerte, uavhengig av pakken.

Beskyttede nøkkelord er som en kombinasjon av både offentlige og private nøkkelord siden de ble introdusert for å kunne få tilgang til variablene utenfor klassen (noe som ikke er mulig i tilfelle private nøkkelord), men også vedlikeholde at bare visse metoder kan arve det samme.

syntax

Beskyttede nøkkelord deklareres med nøkkelordet forhåndsinnstilt som "beskyttet". Vi erklærer først det beskyttede nøkkelordet i en av klassen kalt "MyClass" som nedenfor:

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

Her utvider klassen “SubClass” “MyClass”, og dermed kan det beskyttede nøkkelordet brukes her ved å lage et objekt av SubClass og ved å ringe variablene.

Produksjon:

Beskyttede nøkkelord kan bare brukes på medlemsnivå, dvs. indre klasser som er erklært utenfor en funksjon og som er ikke-statiske. Beskyttet nøkkelord er forskjellig fra det private, ettersom de kan nås utenfor en klasse og i underklassen til en annen pakke.

Noen av begrensningene for bruk av beskyttede nøkkelord er:

  • De kan ikke brukes til å erklære klasser som beskyttet.
  • Grensesnitt kan ikke deklareres som beskyttet.
  • Tilgjengeligheten utenfor pakken er kun gjennom arv.
  • En konstruktør som er beskyttet, kan ikke nås utenfor pakken ved å opprette en instans.

eksempler

La oss gå gjennom noen eksempler der vi kan forstå begrepet beskyttede nøkkelord bedre.

1. Ringe beskyttet nøkkelord uten å utvide foreldreklassen

Her prøver vi å kalle nøkkelordet fra foreldreklassen til “pakke1”. “ProtectedExample2” er opprettet i “package2” og nøkkelordet “disp” kalles her. Men koden vil ikke kunne få tilgang til nøkkelordet siden barneklassen ikke har arvet sin verdi fra hovedklassen og vil kaste et unntak som vist.

Kode:

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

Produksjon:

2. Å få tilgang til en beskyttet klasse

I dette eksemplet prøver vi å få tilgang til klassen “ProtectedExample5” som er beskyttet. Dette forårsaker en kompilasjonsfeil.

Kode:

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

Produksjon:

3. Viser beskyttet nøkkelord fra samme pakke, men av annen klasse

I eksemplet nedenfor lager vi først en pakke som heter “com.package1” og oppretter en ny klasse med navnet “Eksempel”. Her erklærer vi at søkeordet “disp” er beskyttet. Vi skal prøve å vise dette beskyttede nøkkelordet med klassen “Eksempel 1”. For dette må det først opprettes et objekt i foreldreklassen “Eksempel1” og deretter skrive ut verdien som er tilordnet nøkkelordet “disp”.

Kode:

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

Produksjon:

4. Viser beskyttet nøkkelord fra en annen pakke

Ved å bruke samme kode som over skal vi se hvordan du kan kalle det beskyttede nøkkelordet ved å opprette en annen pakke "package2". Et beskyttet nøkkelord kan bare nås via arv fra pakke1, og dermed utvides “ProtectedExample2” fra “Eksempel”. På samme måte som det første eksemplet, må vi lage et objekt i klassen “ProtectedExample2” for å få tilgang til det beskyttede nøkkelordet fra pakken “com.package1”.

Kode:

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

Produksjon:

5. Å få tilgang til en beskyttet klasse ved å overstyre underklassen

Her er klassen erklært som beskyttet i den arvede klassen “Eksempel 5”. I tillegg er en beskyttet klasse kalt “Eksempel” erklært utenfor funksjonen, men i samme pakke. Når et objekt av "Eksempel 5" opprettes og den beskyttede klassen "disp ()" kalles, kan vi observere at den overstyrte metoden kalles i stedet for den utenforstående klassen. Dette er fordi vi ikke kan importere “com.package1” og det er klasse “Eksempel” siden det ikke er synlig og forårsaker en kompilasjonsfeil.

Kode:

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

Produksjon:

Betydningen av beskyttet nøkkelord

  • Disse nøkkelordene lar klassene eller variablene få arv fra foreldreklassen, noe som ikke er mulig med andre begrensede nøkkelord, for eksempel private.
  • Beskyttet nøkkelord er kombinasjonen av fordelen med private søkeord og den til et offentlig søkeord. Det eliminerer ulempen med offentlige søkeord at variabelen eller klassen er tilgjengelig fra hvor som helst i programmet ved å begrense omfanget.

Konklusjon - Beskyttet nøkkelord i Java

Som vist i eksemplene ovenfor, velger vi beskyttede nøkkelord avhengig av tilgangsnivået vi trenger på kodenivå. De hjelper veldig i tilfeller der den samme variabelen eller klassen trenger å få tilgang til fra andre arvelige metoder i programmet. Et foreldre-barn-forhold er alltid til stede mellom foreldreklassen og dens underklasser som bruker det beskyttede nøkkelordet.

Anbefalte artikler

Dette er en guide til beskyttede nøkkelord i Java. Her diskuterer vi oversikten, syntaks og forskjellige eksempler på beskyttede nøkkelord i java. Du kan også se på følgende artikler for å lære mer -

  1. Innkapsling i Java
  2. Konstruktør i Java
  3. Spørsmål om Java-intervju
  4. Overstyring i OOP
  5. Java-nøkkelord
  6. Java-distribusjonsverktøy
  7. Få tilgang til modifikatorer i PHP
  8. Overstyrer i Java
  9. Innkapsling i JavaScript