A Java védett kulcsszavai áttekintése

A védett kulcsszavak olyan kulcsszavak, amelyek korlátozják a hatókört, amelyen belül a változó, a módszer és az építők elérhetők. Ez a Java hozzáférés-módosítók egyik típusa. Ezek segítségével megkülönböztethetők a módszerek, a változók, a konstruktorok és az osztályok. A Java-ban 4 típusú hozzáférés-módosító létezik:

  1. Alapértelmezett kulcsszó: Csak a csomagban érhetők el, és kívül nem hívhatók. Ahogy a neve is sugallja, ha nem szerepel hozzáférési specifikációt, akkor automatikusan alapértelmezésként lesz hozzárendelve.
  2. Nyilvános kulcsszó: A program bárhonnan elérhetők. Ez azt jelenti, hogy felhasználható ugyanabból vagy egy másik osztályból, ugyanabból vagy egy másik csomagból.
  3. Privát kulcsszó: A kulcsszavakat magasabb szintre korlátozzák, mivel nem engedik nekik, hogy bárhová az osztályon kívülről hozzáférjenek.
  4. Védett kulcsszó: Ebben a cikkben megismerjük a védett kulcsszavakat.

Miután egy változót vagy egy módszert védettként jelöltek meg, csak az alábbi módszerekkel férhet hozzá:

  • Ugyanazon osztályon belül, amelyben bejelentették.
  • Más osztályokból, amelyek szintén ugyanabban a csomagban vannak, mint a bejelentett osztály.
  • Azok az osztályok, amelyeket a bejelentett osztálytól örököltek, csomagtól függetlenül.

A védett kulcsszavak olyanok, mint a nyilvános és a magán kulcsszavak kombinációja, mivel bevezetésre kerültek az osztályon kívüli változók eléréséhez (ami a privát kulcsszavak esetében nem lehetséges), ugyanakkor fenntartva, hogy csak bizonyos módszerek örökölhetik ugyanazt.

Szintaxis

A védett kulcsszavakat az előtaggal ellátott kulcsszóval védettnek nyilvánítják. Először a „MyClass” elnevezésű osztály egyikében deklaráljuk a védett kulcsszót:

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

Itt az „SubClass” osztály kiterjeszti a „MyClass” kifejezést, és így a védett kulcsszó itt használható az alosztály objektumának létrehozásával és a változók meghívásával.

Kimenet:

A védett kulcsszavak csak tagszinten használhatók, azaz olyan belső osztályokra, amelyeket egy funkción kívül deklaráltak és amelyek nem statikusak. A védett kulcsszavak különböznek a magánéletektől, mivel osztályon kívül és egy másik csomag alosztályában érhetők el.

A védett kulcsszavak használatának néhány korlátozása a következő:

  • Nem használhatók osztályok védettnek nyilvánítására.
  • Az interfészek nem nyilváníthatók védettnek.
  • A csomagon kívüli hozzáférés csak öröklés útján valósul meg.
  • A védettvé tett konstruktor a példány létrehozásával nem érhető el a csomagon kívül.

Példák

Olvassa el néhány példát, ahol jobban megérthetjük a védett kulcsszavak fogalmát.

1. Védett kulcsszó hívása anélkül, hogy kibővítené a szülői osztályt

Itt megpróbáljuk meghívni a kulcsszót a „pack1” szülőosztályából. A „ProtectedExample2” a „pack2” -ban jön létre, és a „Disp” kulcsszót hívják itt. De a kód nem fogja elérni a kulcsszót, mivel a gyermekosztály nem örökítette meg annak értékét a főosztálytól, és kivételt fog tenni, amint az ábrán látható.

Kód:

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

Kimenet:

2. Belépés egy védett osztályba

Ebben a példában megpróbálunk hozzáférni a védett „ProtectedExample5” osztályhoz. Ez fordítási hibát okoz.

Kód:

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

Kimenet:

3. Védett kulcsszó megjelenítése ugyanabból a csomagból, de eltérő osztályból

Az alábbi példában először létrehozzunk egy „com.package1” nevű csomagot, és hozzunk létre egy új osztályt „Példa” néven. Itt kijelentjük, hogy a „Disa” kulcsszó védett. Megpróbáljuk megjeleníteni ezt a védett kulcsszót az „1. ​​példa” osztály használatával. Ehhez először létre kell hozni az „1. ​​példa” szülőosztály objektumát, majd kinyomtatni a „DISP” kulcsszóhoz rendelt értéket.

Kód:

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

Kimenet:

4. Védett kulcsszó megjelenítése egy másik csomagból

A fenti kód használatával megtudhatjuk, hogyan hívhatjuk meg a védett kulcsszót egy másik „csomag2” csomag létrehozásával. Egy védett kulcsszó csak az 1. csomag öröklésével érhető el, így a „ProtectedExample2” kiterjesztése a „Példa” részre. Az első példához hasonlóan létre kell hoznunk egy „ProtectedExample2” osztályú objektumot annak érdekében, hogy hozzáférjünk a „com.package1” csomagból származó védett kulcsszóhoz.

Kód:

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

Kimenet:

5. Belépés egy védett osztályba az alosztály felülbírálásával

Itt az osztály védettnek nyilvánul az örökölt „5. példa” osztályon belül. A „Példa” elnevezésű védett osztályt a függvényen kívül, de ugyanabban a csomagban deklarálják. Amikor létrehozzuk az „5. példa” objektumát, és meghívjuk a védett osztályt (disp ()), megfigyelhetjük, hogy a felülírt módszert a külső osztály helyett hívják. Ennek oka az, hogy nem tudjuk importálni a „com.package1” fájlt, és a „Példa” osztályba tartozik, mivel nem látható és fordítási hibát okoz.

Kód:

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

Kimenet:

A védett kulcsszó fontossága

  • Ezek a kulcsszavak lehetővé teszik az osztályok vagy azok változóinak öröklését a szülő osztályból, ami nem lehetséges más korlátozott kulcsszavakkal, például a privát kulcsszóval.
  • A védett kulcsszó a magánkulcs és a nyilvános kulcsszó előnyeinek kombinációja. Ezzel kiküszöböli a nyilvános kulcsszó hátrányát, hogy a változó vagy osztály a program bárhonnan elérhető, a hatókör korlátozásával.

Következtetés - Védett kulcsszó a Java-ban

Mint a fenti példákban látható, védett kulcsszavakat választunk a kódszinten megkövetelt hozzáférési szinttől függően. Nagyon segítenek azokban az esetekben, amikor ugyanahhoz a változóhoz vagy osztályhoz a program más örökölt módszereit kell elérni. A szülő-gyermek kapcsolat mindig fennáll a szülő osztály és az alosztályok között, amelyek a védett kulcsszót használják.

Ajánlott cikkek

Ez a Java védett kulcsszavak útmutatója. Itt a java védett kulcsszavak áttekintését, szintaxisát és különféle példáit tárgyaljuk. A következő cikkeket is megnézheti további információkért -

  1. Beágyazás a Java-ba
  2. Kivitelező Java-ban
  3. Java interjú kérdései
  4. Az OOP felülbírálása
  5. Java kulcsszavak
  6. Java telepítési eszközök
  7. Hozzáférés-módosítók a PHP-ben
  8. A Java alapon érvényes
  9. Beágyazás a JavaScript-be

Kategória: