Overzicht van beschermd trefwoord in Java

Beschermde sleutelwoorden zijn sleutelwoorden die worden gebruikt om het bereik te beperken waarbinnen de variabele, methode en constructeurs kunnen worden benaderd. Het is een van de soorten toegangsmodificaties in Java. Ze worden gebruikt om onderscheid te maken tussen het bereik van methoden, variabelen, constructors en klassen. Er zijn 4 soorten toegangsmodificaties in Java en deze zijn:

  1. Standaard sleutelwoord: ze zijn alleen toegankelijk binnen het pakket en kunnen er niet buiten worden geroepen. Zoals de naam al doet vermoeden, wordt er, wanneer er geen toegangsspecificatie wordt genoemd, deze automatisch als standaard toegewezen.
  2. Openbaar trefwoord: ze zijn overal in het programma toegankelijk. Dit betekent dat het kan worden gebruikt uit dezelfde of een andere klasse en hetzelfde of een ander pakket.
  3. Privé-trefwoord: ze beperken de zoekwoorden tot een hoger niveau door ze niet toe te staan ​​van buiten de klas zelf.
  4. Beschermd trefwoord: in dit artikel zullen we meer te weten komen over beschermde sleutelwoorden.

Als een variabele of een methode eenmaal is gemarkeerd als beveiligd, is deze alleen toegankelijk via de onderstaande methoden:

  • Binnen dezelfde klasse waarin het wordt verklaard.
  • Van andere klassen die ook in hetzelfde pakket zitten als de aangegeven klasse.
  • Klassen geërfd van de aangegeven, ongeacht hun pakket.

Beschermde sleutelwoorden zijn als een combinatie van zowel publieke als private sleutelwoorden omdat ze werden geïntroduceerd om toegang te krijgen tot de variabelen buiten de klasse (wat niet mogelijk is in het geval van privé sleutelwoorden) maar ook volhouden dat alleen bepaalde methoden hetzelfde kunnen erven.

Syntaxis

Beveiligde zoekwoorden worden gedeclareerd met het trefwoord voorafgegaan als 'beschermd'. We declareren eerst het beschermde trefwoord in een van de klassen genaamd "MyClass" zoals hieronder:

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

Hier breidt de klasse "SubClass" "MyClass" uit en daarom kan het beschermde trefwoord hier worden gebruikt door een object van SubClass te maken en de variabelen aan te roepen.

Output:

Beschermde trefwoorden kunnen alleen op ledenniveau worden gebruikt, dwz binnenklassen die buiten een functie worden gedeclareerd en die niet-statisch zijn. Het beschermde sleutelwoord verschilt van dat van privé omdat ze toegankelijk zijn buiten een klasse en in de subklasse van een ander pakket.

Enkele beperkingen voor het gebruik van beschermde zoekwoorden zijn:

  • Ze kunnen niet worden gebruikt om klassen als beschermd te verklaren.
  • Interfaces kunnen niet als beschermd worden verklaard.
  • Toegankelijkheid buiten het pakket is alleen via overerving.
  • Een constructor die beveiligd is gemaakt, is buiten het pakket niet toegankelijk door zijn instantie te maken.

Voorbeelden

Laten we enkele voorbeelden doornemen waarin we het concept van beschermde zoekwoorden beter kunnen begrijpen.

1. Bellen naar beschermd trefwoord zonder de bovenliggende klasse uit te breiden

Hier proberen we het trefwoord uit de bovenliggende klasse van "pakket1" te noemen. "ProtectedExample2" wordt gemaakt in "pakket2" en het trefwoord "disp" wordt hier genoemd. Maar de code heeft geen toegang tot het trefwoord omdat de onderliggende klasse de waarde niet heeft geërfd van de hoofdklasse en een uitzondering genereert zoals weergegeven.

Code:

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

Output:

2. Toegang tot een beveiligde klasse

In dit voorbeeld proberen we toegang te krijgen tot de klasse "ProtectedExample5" die wordt beschermd. Dit veroorzaakt een compilatiefout.

Code:

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

Output:

3. Weergegeven beschermd sleutelwoord uit hetzelfde pakket maar met verschillende klassen

In het onderstaande voorbeeld maken we eerst een pakket met de naam "com.package1" en maken we een nieuwe klasse met de naam "Voorbeeld". Hier verklaren we dat ons trefwoord 'disp' beschermd is. We zullen proberen dit beschermde trefwoord weer te geven met behulp van de klasse "Voorbeeld 1". Hiervoor moet eerst een object van bovenliggende klasse "Voorbeeld 1" worden gemaakt en vervolgens de waarde afdrukken die is toegewezen aan het trefwoord "disp".

Code:

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

Output:

4. Beveiligd trefwoord uit een ander pakket weergeven

Met dezelfde code als hierboven zullen we zien hoe het beschermde sleutelwoord kan worden aangeroepen door een ander pakket "pakket2" aan te maken. Een beschermd sleutelwoord is alleen toegankelijk via overerving van pakket1, vandaar dat "ProtectedExample2" wordt uitgebreid vanaf "Voorbeeld". Op dezelfde manier als in het eerste voorbeeld moeten we een object van de klasse "ProtectedExample2" maken om toegang te krijgen tot het beveiligde sleutelwoord uit pakket "com.package1".

Code:

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

Output:

5. Toegang krijgen tot een beveiligde klasse door te overschrijven naar subklasse

Hier wordt de klasse verklaard als beschermd binnen de overgeërfde klasse "Voorbeeld5". Ook wordt een beveiligde klasse genaamd "Voorbeeld" buiten de functie gedeclareerd maar in hetzelfde pakket. Wanneer een object van "Voorbeeld 5" wordt gemaakt en de beschermde klasse "disp ()" wordt genoemd, kunnen we vaststellen dat de overschreven methode wordt aangeroepen in plaats van de externe klasse. Dit komt omdat we "com.package1" en de klasse "Voorbeeld" niet kunnen importeren, omdat het niet zichtbaar is en een compilatiefout veroorzaakt.

Code:

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

Output:

Het belang van beschermd trefwoord

  • Met deze trefwoorden kunnen de klassen of hun variabelen worden overgenomen van de bovenliggende klasse, wat niet mogelijk is met een ander beperkt trefwoord zoals privé.
  • Beschermd zoekwoord is de combinatie van het voordeel van een privéwoord en een openbaar zoekwoord. Het elimineert het nadeel van een publiek sleutelwoord dat de variabele of klasse overal toegankelijk is door het bereik te beperken.

Conclusie - Beschermd trefwoord in Java

Zoals in de bovenstaande voorbeelden wordt getoond, kiezen we beveiligde zoekwoorden, afhankelijk van het toegangsniveau dat we op codeniveau nodig hebben. Ze helpen enorm in gevallen waarin dezelfde variabele of klasse toegankelijk moet zijn via andere overgenomen methoden in het programma. Er is altijd een ouder-kindrelatie aanwezig tussen de bovenliggende klasse en de subklassen die het beveiligde trefwoord gebruiken.

Aanbevolen artikelen

Dit is een handleiding voor beveiligde zoekwoorden in Java. Hier bespreken we het overzicht, de syntaxis en verschillende voorbeelden van beschermde zoekwoorden in Java. U kunt ook de volgende artikelen bekijken voor meer informatie -

  1. Inkapseling in Java
  2. Constructor in Java
  3. Vragen over Java-sollicitaties
  4. Overschrijven in OOP's
  5. Java-zoekwoorden
  6. Hulpmiddelen voor Java-implementatie
  7. Toegang tot modificaties in PHP
  8. Overschrijven in Java
  9. Inkapseling in JavaScript