logo

Публічна проти приватної Java

На Java, громадськість і приватний є ключові слова які відомі як an модифікатор доступу або специфікатор . Це обмежує область або доступність класу, конструктор , змінні , метод s і члени даних. Це залежить від того, який він застосований. Java надає чотири типи модифікаторів доступу: державний, приватний, захищений , і за замовчуванням . Але в цьому розділі ми обговоримо лише два публічні та приватні, а також обговоримо різниця між публічним і приватним специфікатором доступу з прикладом.

Модифікатори доступу контролюють, чи можуть інші класи використовувати певне поле або викликати певний метод. Java забезпечує два рівні контролю доступу:

    Вищий рівень:На цьому рівні ми можемо використовувати лише a громадськість Рівень членства:На цьому рівні ми можемо використовувати державний, приватний, захищений і пакет-приват (якщо ми не використовуємо явний модифікатор, відомий як package-private).

У наведеній нижче таблиці показано рівень доступу до учасників, дозволений модифікаторами public і private.

аплет
Публічна проти приватної Java

Все ще не зрозуміли відмінності між ними? Дозвольте мені показати вам малюнок, який демонструє, як рівні доступу впливають на видимість. На наступному малюнку показано два пакети p1 і p2 . Кожен пакет містить два класи Демо1 і Демо2 (в пакеті p1), і Демо3 і Демо4 (в упаковці р2).

Публічна проти приватної Java

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

Публічна проти приватної Java

Давайте обговоримо це детально.

Модифікатор публічного доступу

Його можна вказати за допомогою громадськість ключове слово. Його область дії або доступність є найширшою серед інших специфікаторів доступу. Доступ до змінних, класів і методів, оголошених як публічні, можна отримати звідусіль у програмі. Він не накладає обмежень на обсяг публічних даних. Якщо ми оголошуємо методи та класи відкритими, вони також порушують принцип інкапсуляція . Ми також можемо використовувати його з класами вищого рівня.

Давайте використаємо специфікатор приватного доступу в 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

Головною відмінністю між публічними та приватними модифікаторами є їх видимість. Java класифікує видимість для членів класу наступним чином:

  • Підкласи в одному пакеті
  • Непідкласи в одному пакеті
  • Підкласи в різних пакетах
  • Класи не в одному пакеті або підкласи
Публічна проти приватної Java

Який з них ми повинні використовувати?

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