На Java, громадськість і приватний є ключові слова які відомі як an модифікатор доступу або специфікатор . Це обмежує область або доступність класу, конструктор , змінні , метод s і члени даних. Це залежить від того, який він застосований. Java надає чотири типи модифікаторів доступу: державний, приватний, захищений , і за замовчуванням . Але в цьому розділі ми обговоримо лише два публічні та приватні, а також обговоримо різниця між публічним і приватним специфікатором доступу з прикладом.
Модифікатори доступу контролюють, чи можуть інші класи використовувати певне поле або викликати певний метод. Java забезпечує два рівні контролю доступу:
У наведеній нижче таблиці показано рівень доступу до учасників, дозволений модифікаторами public і private.
аплет
Все ще не зрозуміли відмінності між ними? Дозвольте мені показати вам малюнок, який демонструє, як рівні доступу впливають на видимість. На наступному малюнку показано два пакети p1 і p2 . Кожен пакет містить два класи Демо1 і Демо2 (в пакеті p1), і Демо3 і Демо4 (в упаковці р2).
У наступній таблиці описано видимість класів, якщо ми робимо класи загальнодоступними та приватними один за одним. На наведеному вище малюнку Demo1 є єдиним класом, видимим для кожного модифікатора доступу.
Давайте обговоримо це детально.
Модифікатор публічного доступу
Його можна вказати за допомогою громадськість ключове слово. Його область дії або доступність є найширшою серед інших специфікаторів доступу. Доступ до змінних, класів і методів, оголошених як публічні, можна отримати звідусіль у програмі. Він не накладає обмежень на обсяг публічних даних. Якщо ми оголошуємо методи та класи відкритими, вони також порушують принцип інкапсуляція . Ми також можемо використовувати його з класами вищого рівня.
Давайте використаємо специфікатор приватного доступу в a Java програма для кращого розуміння.
Demo1.java
недетерміновані кінцеві автомати
package p1; public class Demo1 { public void show() { System.out.println('Javatpoint'); } }
Demo2.java
package p2; import p1.*; class Demo2 { public static void main(String args[]) { Demo1 obj = new Demo1(); obj.show(); } }
Вихід
Javatpoint
Модифікатор приватного доступу
Це протилежність модифікатора public. Його можна вказати за допомогою приватний ключове слово, за яким слідує назва класу (застосовується лише до вкладених класів) або ім’я методу чи елемент даних. Ми не можемо використовувати специфікатор приватного доступу з класами верхнього рівня або інтерфейси . Доступ до змінних, методів і класів, оголошених як приватні, можна отримати лише в класі, в якому вони оголошені, або шляхом успадкування батьківських класів. Це специфікатор доступу з найбільшим обмеженням у Java. Це висотна форма інкапсуляції.
- Ми не можемо перевизначити методи, які оголошені як приватні.
- Якщо ми використовуємо модифікатор private з конструктором, ми уникаємо його підкласу.
- Він приховує класи від інших класів у тому ж самому пакет .
Давайте для кращого розуміння використаємо специфікатор приватного доступу в програмі Java.
У наступному прикладі ми оголосили два класи: Demo1 і Demo2. У класі Demo1 ми визначили метод показати() як приватні. Клас Demo2 містить метод main(), у якому ми створили об’єкт класу Demo1. Після цього ми намагаємося отримати доступ до приватного методу класу Demo1 з класу Demo2, але це неможливо. Але все одно ми запустимо програму, щоб побачити, яку помилку вона показує.
sql порядок у випадковому порядку
class Demo1 { //defining method as private private void show() { System.out.println('Javatpoint'); } } public class Demo2 { public static void main(String args[]) { Demo1 obj = new Demo1(); //trying to access private method of the class Demo1 obj.show(); } }
Коли ми виконуємо наведену вище програму, вона показує таку помилку:
Різниця між публічним і приватним специфікатором доступу в Java
Головною відмінністю між публічними та приватними модифікаторами є їх видимість. Java класифікує видимість для членів класу наступним чином:
- Підкласи в одному пакеті
- Непідкласи в одному пакеті
- Підкласи в різних пакетах
- Класи не в одному пакеті або підкласи
Який з них ми повинні використовувати?
Нам слід використовувати модифікатор публічного доступу, якщо ми хочемо зробити метод або властивість видимими з будь-якого місця, інші класи та екземпляри об’єкта. Використовуйте модифікатор приватного доступу, якщо ви хочете зробити метод або властивість видимими лише у своєму власному класі. Уникайте публічних полів, за винятком констант.