Oversigt over beskyttet nøgleord i Java

Beskyttede nøgleord er nøgleord, der bruges til at begrænse omfanget inden for hvilken variablen, metoden og konstruktører kan få adgang til. Det er en af ​​typerne af adgangsmodifikatorer i Java. De bruges til at skelne mellem omfanget af metoder, variabler, konstruktører og klasser. Der er 4 typer adgangsmodifikatorer i Java, og de er:

  1. Standardnøgleord: De kan kun fås adgang til inden i pakken og kan ikke kaldes uden for den. Som navnet antyder, tildeles der automatisk ingen adgangsspecifikation som standard.
  2. Offentligt nøgleord: Du kan få adgang til dem hvor som helst i programmet. Dette betyder, at det kan bruges fra den samme eller en anden klasse og den samme eller en anden pakke.
  3. Privat nøgleord: De begrænser nøgleordene til et højere niveau ved ikke at give dem adgang til hvor som helst uden for selve klassen.
  4. Beskyttet nøgleord: I denne artikel skal vi lære mere om beskyttede nøgleord.

Når en variabel eller en metode er markeret som beskyttet, kan den kun fås ved hjælp af nedenstående metoder:

  • Inde i den samme klasse, hvor det er erklæret.
  • Fra andre klasser, der også er i den samme pakke som den erklærede klasse.
  • Klasser arvet fra den erklærede, uanset deres pakke.

Beskyttede nøgleord er som en kombination af både offentlige og private nøgleord, da de blev introduceret for at kunne få adgang til variabler uden for klassen (hvilket ikke er muligt i tilfælde af private nøgleord), men også fastholde, at kun visse metoder kan arve det samme.

Syntaks

Beskyttede nøgleord erklæres med nøgleordet forudfæstet som ”beskyttet”. Vi erklærer først det beskyttede nøgleord i en af ​​klassen "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 udvider klassen "SubClass" "MyClass", og det beskyttede nøgleord kan derfor bruges her ved at oprette et objekt til SubClass og ved at kalde variablerne.

Produktion:

Beskyttede nøgleord kan kun bruges på medlemsniveau, dvs. indre klasser, der er erklæret uden for en funktion, og som er ikke-statiske. Det beskyttede nøgleord er forskelligt fra det private, da de kan fås uden for en klasse og i underklassen i en anden pakke.

Nogle af begrænsningerne for brug af beskyttede nøgleord er:

  • De kan ikke bruges til at erklære klasser som beskyttede.
  • Grænseflader kan ikke erklæres som beskyttede.
  • Tilgængelighed uden for pakken er kun gennem arv.
  • En konstruktør, der er beskyttet, kan ikke fås adgang til uden for pakken ved at oprette dens instans.

eksempler

Lad os gennemgå nogle eksempler, hvor vi bedre kan forstå begrebet beskyttede nøgleord.

1. Opkald til beskyttet nøgleord uden at udvide forældreklassen

Her prøver vi at kalde nøgleordet fra den overordnede klasse for "pakke1". “ProtectedExample2” oprettes i “package2”, og nøgleordet “disp” kaldes her. Men koden kan ikke få adgang til nøgleordet, da børneklassen ikke har arvet sin værdi fra hovedklassen og vil kaste en undtagelse 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);
)
)

Produktion:

2. Adgang til en beskyttet klasse

I dette eksempel prøver vi at få adgang til klassen “ProtectedExample5”, der er beskyttet. Dette medfører en kompilationsfejl.

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

Produktion:

3. Viser beskyttet nøgleord fra den samme pakke, men anden klasse

I nedenstående eksempel opretter vi først en pakke kaldet “com.package1” og opretter en ny klasse med navnet “Eksempel”. Her erklærer vi, at vores nøgleord "disp" er beskyttet. Vi vil forsøge at vise dette beskyttede nøgleord ved hjælp af klassen “Eksempel 1”. Til dette skal der først oprettes et objekt i forældreklasse “Eksempel1” og derefter udskrive den værdi, der er tildelt nøgleordet “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);
)
)

Produktion:

4. Viser beskyttet nøgleord fra en anden pakke

Ved hjælp af den samme kode som ovenfor skal vi se, hvordan man kalder det beskyttede nøgleord ved at oprette en anden pakke “pakke2”. Et beskyttet nøgleord kan kun fås adgang gennem arv fra pakke1, hvorfor "ProtectedExample2" udvides fra "Eksempel". På samme måde som det første eksempel er vi nødt til at oprette et objekt i klassen “ProtectedExample2” for at få adgang til det beskyttede nøgleord 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);
)
)

Produktion:

5. Adgang til en beskyttet klasse ved at tilsidesætte underklassen

Her erklæres klassen som beskyttet inde i den arvede klasse “Eksempel 5”. En beskyttet klasse kaldet “Eksempel” erklæres også uden for funktionen, men i den samme pakke. Når der oprettes et objekt fra "Eksempel 5" og den beskyttede klasse "disp ()" kaldes, kan vi observere, at den overstyrede metode kaldes i stedet for den udvendige klasse. Dette skyldes, at vi ikke kan importere “com.package1” og det er klasse “Eksempel”, da det ikke er synligt og forårsager en kompilationsfejl.

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

Produktion:

Betydningen af ​​det beskyttede nøgleord

  • Disse nøgleord tillader, at klasserne eller deres variabler nedarves fra dets overordnede klasse, hvilket ikke er muligt med noget andet begrænset nøgleord, f.eks.
  • Beskyttet nøgleord er kombinationen af ​​fordelen ved privat søgeord og det ved et offentligt nøgleord. Det eliminerer ulempen ved det offentlige nøgleord, at variablen eller klassen er tilgængelig overalt i programmet ved at begrænse omfanget.

Konklusion - Beskyttet nøgleord i Java

Som vist i ovenstående eksempler vælger vi beskyttede nøgleord afhængigt af det adgangsniveau, vi har brug for på kodeniveau. De hjælper meget i tilfælde, hvor den samme variabel eller klasse skal tilgås fra andre arvede metoder i programmet. Et forældre-barn-forhold er altid til stede mellem forældreklassen og dets underklasser, der bruger det beskyttede nøgleord.

Anbefalede artikler

Dette er en guide til beskyttede nøgleord i Java. Her diskuterer vi oversigten, syntaks og forskellige eksempler på beskyttede nøgleord i java. Du kan også se på de følgende artikler for at lære mere -

  1. Indkapsling i Java
  2. Konstruktør i Java
  3. Spørgsmål om Java-interview
  4. Overstyring i OOP'er
  5. Java-nøgleord
  6. Java-implementeringsværktøjer
  7. Få adgang til modifikatorer i PHP
  8. Overstyring i Java
  9. Indkapsling i JavaScript

Kategori: