Преглед на защитената ключова дума в Java

Защитените ключови думи са ключови думи, които се използват за ограничаване на обхвата, в който променливата, метода и конструкторите могат да бъдат достъпни. Той е един от видовете модификатори на достъп в Java. Те се използват за разграничаване на обхвата от методи, променливи, конструктори и класове. В Java има 4 типа модификатори на достъп и те са:

  1. Ключова дума по подразбиране: Те могат да бъдат достъпни само в рамките на пакета и не могат да бъдат извиквани извън него. Както подсказва името, когато не се споменава спецификатор за достъп, той автоматично се назначава по подразбиране.
  2. Публична ключова дума: До тях можете да получите достъп от всяка точка на програмата. Това означава, че може да се използва от същия или различен клас и същия или различен пакет.
  3. Частна ключова дума: Те ограничават ключовите думи на по-високо ниво, като не позволяват достъп до тях от никъде извън самия клас.
  4. Защитена ключова дума: В тази статия ще се запознаем повече с защитените ключови думи.

След като променлива или метод е маркирана като защитена, до нея можете да получите достъп само чрез следните методи:

  • Вътре в същия клас, в който е деклариран.
  • От други класове, които също са в същия пакет като декларирания клас.
  • Класове, наследени от декларирания, независимо от пакета им.

Защитените ключови думи са като комбинация от публични и частни ключови думи, тъй като те бяха въведени, за да имат достъп до променливите извън класа (което не е възможно в случай на частни ключови думи), но също така поддържат, че само определени методи могат да наследяват същите.

Синтаксис

Защитените ключови думи се декларират с ключовата дума с префикс към нея като „защитена“. Първо декларираме защитената ключова дума в един от класа, наречен „MyClass“, както е посочено по-долу:

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

Тук класът „Подклас“ разширява „MyClass“ и по този начин защитената ключова дума може да се използва тук, като създава обект на SubClass и извиква променливите.

изход:

Защитените ключови думи могат да се използват само на ниво член, т.е. вътрешни класове, които са декларирани извън функция и които са нестатични. Защитената ключова дума е различна от тази на частната, тъй като те могат да бъдат достъпни извън клас и в подклас на друг пакет.

Някои от ограниченията за използване на защитени ключови думи са:

  • Те не могат да се използват за деклариране на класове за защитени.
  • Интерфейсите не могат да бъдат декларирани като защитени.
  • Достъпността извън пакета е само чрез наследяване.
  • Конструктор, който е защитен, не може да бъде достъпен извън пакета, като създаде своя екземпляр.

Примери

Нека да разгледаме някои примери, в които можем да разберем по-добре концепцията на защитените ключови думи.

1. Извикване на защитена ключова дума без разширяване на родителския клас

Тук се опитваме да извикаме ключовата дума от родителския клас на “package1”. „ProtectedExample2“ е създаден в „package2“ и тук се нарича ключовата дума „disp“. Но кодът няма да има достъп до ключовата дума, тъй като класът деца не е наследил стойността си от основния клас и ще хвърли изключение, както е показано.

Код:

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

изход:

2. Достъп до защитен клас

В този пример се опитваме да получим достъп до клас „ProtectedExample5“, който е защитен. Това причинява грешка при компилация.

Код:

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

изход:

3. Показване на защитена ключова дума от един и същ пакет, но различен клас

В примера по-долу първо създаваме пакет, наречен „com.package1“ и създаваме нов клас с името „Example“. Тук заявяваме, че нашата ключова дума „disp“ е защитена. Ще се опитаме да покажем тази защитена ключова дума, като използваме клас „Example1“. За целта първо трябва да се създаде обект от родителски клас „Example1“ и след това да отпечатате стойността, присвоена на ключовата дума „disp“.

Код:

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

изход:

4. Показване на защитена ключова дума от различен пакет

Използвайки същия код като по-горе, ще видим как да извикаме защитената ключова дума чрез създаване на различен пакет “package2”. Защитената ключова дума може да бъде достъпна само чрез наследяване от пакет1, следователно „ProtectedExample2“ е разширено от „Пример“. По подобен начин като първия пример, ние трябва да създадем обект от клас „ProtectedExample2“, за да получим достъп до защитената ключова дума от пакет „com.package1“.

Код:

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

изход:

5. Достъп до защитен клас чрез отмяна на подклас

Тук класът е деклариран като защитен в наследствения клас „Example5“. Също така, защитен клас, наречен „Example“, е деклариран извън функцията, но в същия пакет. Когато се създаде обект от "Example5" и се извика защитен клас "disp ()", можем да наблюдаваме, че вместо от външния клас се извиква отменения метод. Това е така, защото няма да можем да импортираме „com.package1“ и това е клас „Пример“, тъй като не се вижда и причинява грешка при компилация.

Код:

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

изход:

Значение на защитената ключова дума

  • Тези ключови думи позволяват класовете или техните променливи да бъдат наследени от неговия родителски клас, което не е възможно с която и да е друга ключова дума с ограничение, като частна.
  • Защитената ключова дума е комбинацията от предимството на частната ключова дума и тази на публичната ключова дума. Той елиминира недостатъка на публичната ключова дума, че променливата или класът са достъпни от всяка точка на програмата чрез ограничаване на обхвата.

Заключение - Защитена ключова дума в Java

Както е показано в горните примери, ние избираме защитени ключови думи в зависимост от нивото на достъп, което ни е необходимо на ниво код. Те помагат значително в случаите, когато е необходимо да се получи същата променлива или клас от други наследени методи в програмата. Връзката родител-дете винаги присъства между родителския клас и неговите подкласове, които използват защитената ключова дума.

Препоръчителни статии

Това е ръководство за защитените ключови думи в Java. Тук обсъждаме преглед, синтаксис и различни примери на защитени ключови думи в Java. Можете също да разгледате следните статии, за да научите повече -

  1. Капсулиране в Java
  2. Конструктор в Java
  3. Въпроси за интервю на Java
  4. Повишаване в OOPs
  5. Java Ключови думи
  6. Инструменти за разполагане на Java
  7. Достъп Модификатори в PHP
  8. По-важно в Java
  9. Капсулиране в JavaScript