logo

Публична срещу частна Java

В Java, публичен и частен са ключови думи които са известни като an модификатор за достъп или спецификатор . Ограничава обхвата или достъпността на клас, конструктор , променливи , метод s и членове на данни. Зависи кое се прилага. Java предоставя четирите типа модификатори за достъп: публичен, частен, защитен , и по подразбиране . Но в този раздел ще обсъдим само две публични и частни, а също и ще обсъдим разлика между публичен и частен спецификатор за достъп с пример.

Модификаторите за достъп контролират дали други класове могат да използват определено поле или да извикват определен метод. Java осигурява две нива на контрол на достъпа:

    Най-високо ниво:На това ниво можем да използваме само a публичен Ниво на член:На това ниво можем да използваме публичен, частен, защитен и пакет-личен (ако не използваме изричен модификатор е известен като частен пакет).

Следната таблица показва нивото на достъп до членовете, разрешено от публичните и частните модификатори.

java екземпляр на
Публична срещу частна Java

Все още не сте изяснили разликите между двете? Нека ви покажа фигура, която демонстрира как нивата на достъп влияят върху видимостта. Следната фигура показва двата пакета p1 и p2 . Всеки пакет съдържа два класа Демо1 и Демо2 (в пакет p1), и Демо3 и Демо4 (в пакет p2).

Публична срещу частна Java

Следната таблица описва видимостта на класовете, ако направим класовете публични и частни един по един. В горната фигура Demo1 е единственият клас, който е видим за всеки модификатор на достъп.

Публична срещу частна Java

Нека го обсъдим подробно.

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

Може да се посочи с помощта на публичен ключова дума. Неговият обхват или достъпност е най-широкият сред другите спецификатори за достъп. Променливите, класовете и методите, декларирани като публични, могат да бъдат достъпни отвсякъде в програмата. Той не налага ограничения върху обхвата на членовете на публичните данни. Ако декларираме методите и класовете като публични, те също нарушават принципа на капсулиране . Можем да го използваме и с класове от най-високо ниво.

Нека използваме спецификатора за частен достъп в a Java програма за по-добро разбиране.

Демо1.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 

Модификатор за частен достъп

Това е обратното на публичния модификатор. Може да се посочи с помощта на частен ключова дума, последвана от име на клас (прилага се само към вложени класове) или име на метод или член на данните. Не можем да използваме спецификатора за частен достъп с класовете от най-високо ниво или интерфейси . Променливите, методите и класовете, декларирани като частни, могат да бъдат достъпни само в класа, в който са декларирани, или чрез наследяване на родителските класове. Това е най-ограниченият спецификатор за достъп в Java. Това е формата на височини на капсулиране.

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

Нека използваме спецификатора за частен достъп в Java програма за по-добро разбиране.

В следващия пример сме декларирали два класа: Demo1 и Demo2. В класа Demo1 сме дефинирали метод покажи () като частни. Класът Demo2 съдържа метода main(), в който сме създали обект от класа Demo1. След това се опитваме да получим достъп до частния метод на класа Demo1 от класа Demo2, което не е възможно. Но все пак ще изпълним програмата, за да видим коя грешка показва.

java конструктор на низове
 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

Кое да използваме?

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