Przegląd chronionego słowa kluczowego w Javie

Chronione słowa kluczowe to słowa kluczowe używane do ograniczenia zakresu, w którym można uzyskać dostęp do zmiennej, metody i konstruktorów. Jest to jeden z rodzajów modyfikatorów dostępu w Javie. Służą do rozróżnienia zakresu metod, zmiennych, konstruktorów i klas. Istnieją 4 rodzaje modyfikatorów dostępu w Javie i są to:

  1. Domyślne słowo kluczowe: są dostępne tylko w pakiecie i nie można ich wywoływać poza nim. Jak sama nazwa wskazuje, kiedy nie wspomniano o żadnym specyfikatorze dostępu, jest on automatycznie przypisywany jako domyślny.
  2. Publiczne słowo kluczowe: można uzyskać do nich dostęp z dowolnego miejsca w programie. Oznacza to, że można go używać z tej samej lub innej klasy i tego samego lub innego pakietu.
  3. Prywatne słowo kluczowe: Ograniczają słowa kluczowe na wyższy poziom, uniemożliwiając dostęp do nich z dowolnego miejsca poza klasą.
  4. Chronione słowo kluczowe: w tym artykule dowiemy się więcej o chronionych słowach kluczowych.

Po oznaczeniu zmiennej lub metody jako chronionej można uzyskać do niej dostęp tylko za pomocą poniższych metod:

  • Wewnątrz tej samej klasy, w której jest zadeklarowany.
  • Z innych klas, które są również w tym samym pakiecie co klasa zadeklarowana.
  • Klasy dziedziczone z zadeklarowanej, niezależnie od ich paczki.

Chronione słowa kluczowe są kombinacją zarówno publicznych, jak i prywatnych słów kluczowych, ponieważ zostały wprowadzone, aby mieć dostęp do zmiennych poza klasą (co nie jest możliwe w przypadku prywatnych słów kluczowych), ale jednocześnie utrzymując, że tylko niektóre metody mogą dziedziczyć to samo.

Składnia

Chronione słowa kluczowe są zadeklarowane z prefiksem słowa kluczowego „chronione”. Najpierw deklarujemy chronione słowo kluczowe w jednej z klas o nazwie „MyClass”, jak poniżej:

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

Tutaj klasa „SubClass” rozszerza „MyClass”, a zatem chronione słowo kluczowe może być tutaj użyte, tworząc obiekt SubClass i wywołując zmienne.

Wynik:

Chronionych słów kluczowych można używać tylko na poziomie elementu, tj. Klas wewnętrznych zadeklarowanych poza funkcją i niestatycznych. Chronione słowo kluczowe różni się od słowa prywatnego, ponieważ można je uzyskać poza klasą i w podklasie innego pakietu.

Niektóre ograniczenia używania chronionych słów kluczowych to:

  • Nie można ich używać do deklarowania klas jako chronionych.
  • Interfejsy nie mogą być deklarowane jako chronione.
  • Dostępność poza pakietem jest możliwa tylko poprzez dziedziczenie.
  • Konstruktor, który jest chroniony, nie może być dostępny poza pakietem poprzez utworzenie jego instancji.

Przykłady

Przejdźmy przez kilka przykładów, w których możemy lepiej zrozumieć pojęcie chronionych słów kluczowych.

1. Wywołanie chronionego słowa kluczowego bez rozszerzania klasy nadrzędnej

W tym miejscu próbujemy wywołać słowo kluczowe z nadrzędnej klasy „pakiet1”. „ProtectedExample2” jest tworzony w „package2” i tutaj wywoływane jest słowo kluczowe „disp”. Ale kod nie będzie mógł uzyskać dostępu do słowa kluczowego, ponieważ klasa potomna nie odziedziczyła swojej wartości od klasy głównej i zgłosi wyjątek, jak pokazano.

Kod:

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

Wynik:

2. Dostęp do chronionej klasy

W tym przykładzie próbujemy uzyskać dostęp do chronionej klasy „ProtectedExample5”. To powoduje błąd kompilacji.

Kod:

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

Wynik:

3. Wyświetlanie chronionego słowa kluczowego z tego samego pakietu, ale innej klasy

W poniższym przykładzie najpierw tworzymy pakiet o nazwie „com.package1” i tworzymy nową klasę o nazwie „Przykład”. Oświadczamy, że nasze słowo kluczowe „disp” jest chronione. Spróbujemy wyświetlić to chronione słowo kluczowe, używając klasy „Przykład1”. W tym celu należy najpierw utworzyć obiekt klasy nadrzędnej „Przykład1”, a następnie wydrukować wartość przypisaną do słowa kluczowego „disp”.

Kod:

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

Wynik:

4. Wyświetlanie chronionego słowa kluczowego z innego pakietu

Korzystając z tego samego kodu, co powyżej, zobaczymy, jak wywołać chronione słowo kluczowe, tworząc inny pakiet „pakiet2”. Dostęp do chronionego słowa kluczowego można uzyskać tylko poprzez dziedziczenie z pakietu 1, dlatego „ProtectedExample2” jest rozszerzony z „Przykład”. W podobny sposób jak w pierwszym przykładzie musimy utworzyć obiekt klasy „ProtectedExample2”, aby uzyskać dostęp do chronionego słowa kluczowego z pakietu „com.package1”.

Kod:

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

Wynik:

5. Dostęp do chronionej klasy poprzez przesłonięcie do podklasy

Tutaj klasa jest zadeklarowana jako chroniona w odziedziczonej klasie „Przykład5”. Ponadto klasa chroniona o nazwie „Przykład” jest zadeklarowana poza funkcją, ale w tym samym pakiecie. Kiedy tworzony jest obiekt „Przykład5” i wywoływana jest klasa chroniona „disp ()”, możemy zauważyć, że zamiast klasy zewnętrznej wywoływana jest metoda przesłonięta. Wynika to z faktu, że nie będziemy mogli importować pliku „com.package1” i jego klasy „Przykład”, ponieważ nie jest on widoczny i powoduje błąd kompilacji.

Kod:

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

Wynik:

Znaczenie chronionego słowa kluczowego

  • Te słowa kluczowe umożliwiają dziedziczenie klas lub ich zmiennych z klasy nadrzędnej, co nie jest możliwe w przypadku żadnego innego słowa kluczowego z ograniczeniami, takiego jak prywatny.
  • Chronione słowo kluczowe to kombinacja przewagi słowa prywatnego i słowa publicznego. Eliminuje to wadę publicznego słowa kluczowego, że zmienna lub klasa są dostępne z dowolnego miejsca w programie poprzez ograniczenie zakresu.

Wniosek - chronione słowo kluczowe w Javie

Jak pokazano w powyższych przykładach, wybieramy chronione słowa kluczowe w zależności od wymaganego poziomu dostępu na poziomie kodu. Pomagają znacznie w przypadkach, gdy do tej samej zmiennej lub klasy należy uzyskać dostęp z innych odziedziczonych metod w programie. Relacja rodzic-dziecko jest zawsze obecna między klasą nadrzędną i jej podklasami, które używają chronionego słowa kluczowego.

Polecane artykuły

Jest to przewodnik po chronionych słowach kluczowych w Javie. Tutaj omawiamy przegląd, składnię i różne przykłady chronionych słów kluczowych w Javie. Możesz także przejrzeć następujące artykuły, aby dowiedzieć się więcej -

  1. Hermetyzacja w Javie
  2. Konstruktor w Javie
  3. Pytania do wywiadu Java
  4. Przesłanianie w OOP
  5. Słowa kluczowe Java
  6. Narzędzia wdrażania Java
  7. Dostęp do modyfikatorów w PHP
  8. Przesłanianie w Javie
  9. Hermetyzacja w JavaScript