Захищене ключове слово на Java - Синтаксис та приклади захищеного ключового слова

Зміст:

Anonim

Огляд захищеного ключового слова на 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);
)
)

Тут клас "SubClass" поширюється на "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" поширюється з "Example". Аналогічно, як у першому прикладі, ми повинні створити об’єкт класу “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. Перевагу в ООП
  5. Ключові слова Java
  6. Інструменти розгортання Java
  7. Доступ до модифікаторів у PHP
  8. Перевагу в Java
  9. Інкапсуляція в JavaScript