Översikt över skyddat sökord i Java

Skyddade nyckelord är nyckelord som används för att begränsa omfattningen inom vilken variabeln, metoden och konstruktörerna kan nås. Det är en av typerna av åtkomstmodifierare i Java. De används för att skilja mellan omfattningen av metoder, variabler, konstruktörer och klasser. Det finns fyra typer av åtkomstmodifierare i Java och de är:

  1. Standardnyckelord: De kan endast nås inom paketet och kan inte kallas utanför det. Som namnet antyder tilldelas det automatiskt som standard när ingen åtkomstspecifikation nämns.
  2. Offentligt nyckelord: De kan nås var som helst i programmet. Detta betyder att det kan användas från samma eller en annan klass och samma eller ett annat paket.
  3. Privata nyckelord: De begränsar nyckelorden till en högre nivå genom att inte tillåta dem åtkomst från någonstans utanför själva klassen.
  4. Skyddat nyckelord: I den här artikeln ska vi lära oss mer om skyddade nyckelord.

När en variabel eller en metod är markerad som skyddad kan den bara nås med följande metoder:

  • Inne i samma klass där det förklaras.
  • Från andra klasser som också finns i samma paket som den deklarerade klassen.
  • Klasser ärvde från den deklarerade, oavsett paket.

Skyddade nyckelord är som en kombination av både offentliga och privata nyckelord eftersom de introducerades för att kunna få åtkomst till variablerna utanför klassen (vilket inte är möjligt i fallet med privata nyckelord) men samtidigt som att endast vissa metoder kan ärva samma.

Syntax

Skyddade nyckelord deklareras med nyckelordet förinställt som "skyddat". Vi förklarar först det skyddade nyckelordet i en av klassen som heter "MyClass" enligt nedan:

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

Här utökar klassen "SubClass" "MyClass" och därmed kan det skyddade nyckelordet användas här genom att skapa ett objekt för SubClass och genom att anropa variablerna.

Produktion:

Skyddade nyckelord kan endast användas på medlemsnivå, dvs inre klasser som deklareras utanför en funktion och som är icke-statiska. Det skyddade nyckelordet skiljer sig från det privata eftersom de kan nås utanför en klass och i underklassen i ett annat paket.

Några av begränsningarna för att använda skyddade nyckelord är:

  • De kan inte användas för att deklarera klasser som skyddade.
  • Gränssnitt kan inte deklareras som skyddade.
  • Tillgängligheten utanför paketet är endast genom arv.
  • En konstruktör som är skyddad kan inte nås utanför paketet genom att skapa sin instans.

exempel

Låt oss gå igenom några exempel där vi kan förstå konceptet med skyddade nyckelord bättre.

1. Ringa skyddat nyckelord utan att utöka föräldraklassen

Här försöker vi kalla nyckelordet från förälderklassen för "paket1". "ProtectedExample2" skapas i "package2" och nyckelordet "disp" kallas här. Men koden kommer inte att kunna komma åt nyckelordet eftersom barnklass inte har ärvt sitt värde från huvudklassen och kommer att kasta ett undantag som visas.

Koda:

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. Få åtkomst till en skyddad klass

I det här exemplet försöker vi få åtkomst till klassen “ProtectedExample5” som är skyddad. Detta orsakar ett sammanställningsfel.

Koda:

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. Visar skyddade nyckelord från samma paket men av olika klass

I exemplet nedan skapar vi först ett paket som heter "com.package1" och skapar en ny klass med namnet "Exempel". Här förklarar vi att vårt sökord "disp" är skyddat. Vi ska försöka visa detta skyddade nyckelord med klassen “Exempel 1”. För detta måste först ett objekt i överordnad klass "Exempel 1" skapas och sedan skriva ut värdet som tilldelats till nyckelordet "disp".

Koda:

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. Visa skyddade nyckelord från ett annat paket

Med samma kod som ovan ska vi se hur man kan kalla det skyddade nyckelordet genom att skapa ett annat paket ”paket2”. Ett skyddat nyckelord kan endast nås genom arv från paketet 1 och "ProtectedExample2" utvidgas från "Exempel". På liknande sätt som det första exemplet måste vi skapa ett objekt i klassen "ProtectedExample2" för att få åtkomst till det skyddade nyckelordet från paketet "com.package1".

Koda:

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. Få åtkomst till en skyddad klass genom att åsidosätta underklassen

Här förklaras klassen som skyddad i den ärvda klassen “Exempel 5”. Dessutom deklareras en skyddad klass som heter "Exempel" utanför funktionen men i samma paket. När ett objekt med "Exempel 5" skapas och den skyddade klassen "disp ()" kallas, kan vi observera att den åsidosatta metoden kallas i stället för den yttre klassen. Det beror på att vi inte kan importera “com.package1” och det är klass “Exempel” eftersom det inte är synligt och orsakar ett kompilationsfel.

Koda:

//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:

Betydelsen av skyddat sökord

  • Dessa nyckelord tillåter att klasserna eller deras variabler ärvs från dess överordnade klass, vilket inte är möjligt med något annat begränsat sökord, t.ex. privat.
  • Skyddat nyckelord är kombinationen av fördelen med privata nyckelord och det för ett offentligt nyckelord. Det eliminerar nackdelen med offentliga sökord att variabeln eller klassen är tillgänglig från var som helst i programmet genom att begränsa omfattningen.

Slutsats - Skyddat nyckelord i Java

Som visas i ovanstående exempel väljer vi skyddade nyckelord beroende på vilken åtkomstnivå vi behöver på kodnivå. De hjälper mycket i fall där samma variabel eller klass behöver åtkomst från andra ärvda metoder i programmet. En förälder-barn-relation finns alltid mellan förälderklassen och dess underklasser som använder det skyddade nyckelordet.

Rekommenderade artiklar

Detta är en guide till skyddade nyckelord i Java. Här diskuterar vi översikten, syntaxen och olika exempel på skyddade nyckelord i java. Du kan också titta på följande artiklar för att lära dig mer -

  1. Inkapsling i Java
  2. Konstruktör i Java
  3. Java-intervjufrågor
  4. Övergripande i OOP
  5. Java-nyckelord
  6. Java-distributionsverktyg
  7. Få åtkomst till modifierare i PHP
  8. Övergripande i Java
  9. Inkapsling i JavaScript

Kategori: