Модифікатори доступу Java (з прикладами)

У цьому підручнику ми дізнаємося про модифікатор доступу Java, його типи та як їх використовувати за допомогою прикладів.

Що таке модифікатори доступу?

У Java модифікатори доступу використовуються для встановлення доступності (видимості) класів, інтерфейсів, змінних, методів, конструкторів, членів даних та методів сеттера. Наприклад,

 class Animal ( public void method1() (… ) private void method2() (… ) )

У наведеному вище прикладі ми оголосили 2 методи: method1 () і method2 (). Ось,

  • метод1 є public- Це означає, що до нього можуть отримати доступ інші класи.
  • метод2 є private- Це означає, що інші класи не можуть отримати до нього доступ.

Зверніть увагу на ключове слово publicта private. Це модифікатори доступу в Java. Вони також відомі як модифікатори видимості.

Примітка : Ви не можете встановити модифікатор доступу методів отримання.

Типи модифікатора доступу

Перш ніж дізнатися про типи модифікаторів доступу, переконайтеся, що знаєте про пакети Java.

У Java є чотири ключові слова модифікаторів доступу, і це:

Модифікатор Опис
За замовчуванням декларації видно лише в пакеті (приватний пакет)
Приватна оголошення видно лише в класі
Захищений декларації видно в пакунку або всіх підкласах
Громадський декларації видно скрізь

Модифікатор доступу за замовчуванням

Якщо ми явно не вказуємо будь-який модифікатор доступу для класів, методів, змінних тощо, тоді за замовчуванням розглядається модифікатор доступу за замовчуванням. Наприклад,

 package defaultPackage; class Logger ( void message()( System.out.println("This is a message"); ) )

Тут клас Logger має модифікатор доступу за замовчуванням. І клас видно всім класам, що належать до пакета defaultPackage. Однак, якщо ми спробуємо використати клас Logger в іншому класі за межами defaultPackage, ми отримаємо помилку компіляції.

Модифікатор приватного доступу

Коли оголошені змінні та методи private, вони не можуть отримати доступ за межами класу. Наприклад,

 class Data ( // private variable private String name; ) public class Main ( public static void main(String() main)( // create an object of Data Data d = new Data(); // access private variable and field from another class d.name = "Programiz"; ) )

У наведеному вище прикладі ми оголосили приватну змінну з назвою name та приватний метод з назвою display(). Запустивши програму, ми отримаємо таку помилку:

 Main.java:18: error: name has private access in Data d.name = "Programiz"; ^

Помилка генерується, оскільки ми намагаємось отримати доступ до приватної змінної та методу private класу Data з класу Main.

Можливо, вам цікаво, що, якщо нам потрібен доступ до цих приватних змінних. У цьому випадку ми можемо використовувати метод геттерів та сеттерів. Наприклад,

 class Data ( private String name; // getter method public String getName() ( return this.name; ) // setter method public void setName(String name) ( this.name= name; ) ) public class Main ( public static void main(String() main)( Data d = new Data(); // access the private variable using the getter and setter d.setName("Programiz"); System.out.println(d.getName()); ) )

Вихід :

 Назва - Programiz

У наведеному вище прикладі ми маємо приватну змінну з іменем. Для доступу до змінної із зовнішнього класу ми використовували методи: getName()and setName(). Ці методи в Java називаються getter і setter.

Тут ми використовували метод setter ( setName()) для присвоєння значення змінній та метод getter ( getName()) для доступу до змінної.

Ми використовували thisключове слово всередині setName () для посилання на змінну класу. Щоб дізнатися більше про це ключове слово, відвідайте Java це ключове слово.

Примітка : Ми не можемо оголосити класи та інтерфейси приватними в Java. Однак вкладені класи можна оголосити приватними. Щоб дізнатися більше, відвідайте вкладений та внутрішній клас Java.

Модифікатор захищеного доступу

Коли декларуються методи та члени даних protected, ми можемо отримати до них доступ як в одному пакеті, так і з підкласів. Наприклад,

 class Animal ( // protected method protected void display() ( System.out.println("I am an animal"); ) ) class Dog extends Animal ( public static void main(String() args) ( // create an object of Dog class Dog dog = new Dog(); // access protected method dog.display(); ) )

Вихід :

 Я тварина

У наведеному вище прикладі ми маємо захищений метод, названий display()всередині класу Animal. Клас Animal успадковується класом Dog. Щоб дізнатись більше про успадкування, відвідайте Java наслідування.

Потім ми створили об’єкт-собаку класу Dog. За допомогою об’єкта ми спробували отримати доступ до захищеного методу батьківського класу.

Оскільки захищені методи можна отримати з дочірніх класів, ми можемо отримати доступ до класу Animal з класу Dog.

Примітка : Ми не можемо оголосити класи або інтерфейси protectedв Java.

Модифікатор громадського доступу

Коли оголошуються методи, змінні, класи тощо public, ми можемо отримати до них доступ з будь-якого місця. Модифікатор загальнодоступного доступу не має обмежень області. Наприклад,

 // Animal.java file // public class public class Animal ( // public variable public int legCount; // public method public void display() ( System.out.println("I am an animal."); System.out.println("I have " + legCount + " legs."); ) ) // Main.java public class Main ( public static void main( String() args ) ( // accessing the public class Animal animal = new Animal(); // accessing the public variable animal.legCount = 4; // accessing the public method animal.display(); ) )

Вихід :

Я тварина. У мене 4 ноги.

Ось,

  • Громадський клас Тварина доступний з Основного класу.
  • Відкрита змінна legCount доступна з класу Main.
  • Відкритий метод display()доступний з класу Main.

Модифікатори доступу, зведені на одному малюнку

Доступність усіх модифікаторів доступу в Java

Модифікатори доступу в основному використовуються для інкапсуляції. Я можу допомогти нам контролювати, яка частина програми може мати доступ до учасників класу. Так що запобігти зловживанню даними. Щоб дізнатися більше про інкапсуляцію, відвідайте Java Encapsulation.

Цікаві статті...