В Java, публичен и частен са ключови думи които са известни като an модификатор за достъп или спецификатор . Ограничава обхвата или достъпността на клас, конструктор , променливи , метод s и членове на данни. Зависи кое се прилага. Java предоставя четирите типа модификатори за достъп: публичен, частен, защитен , и по подразбиране . Но в този раздел ще обсъдим само две публични и частни, а също и ще обсъдим разлика между публичен и частен спецификатор за достъп с пример.
Модификаторите за достъп контролират дали други класове могат да използват определено поле или да извикват определен метод. Java осигурява две нива на контрол на достъпа:
Следната таблица показва нивото на достъп до членовете, разрешено от публичните и частните модификатори.
java екземпляр на
Все още не сте изяснили разликите между двете? Нека ви покажа фигура, която демонстрира как нивата на достъп влияят върху видимостта. Следната фигура показва двата пакета p1 и p2 . Всеки пакет съдържа два класа Демо1 и Демо2 (в пакет p1), и Демо3 и Демо4 (в пакет p2).
Следната таблица описва видимостта на класовете, ако направим класовете публични и частни един по един. В горната фигура Demo1 е единственият клас, който е видим за всеки модификатор на достъп.
Нека го обсъдим подробно.
Модификатор на публичен достъп
Може да се посочи с помощта на публичен ключова дума. Неговият обхват или достъпност е най-широкият сред другите спецификатори за достъп. Променливите, класовете и методите, декларирани като публични, могат да бъдат достъпни отвсякъде в програмата. Той не налага ограничения върху обхвата на членовете на публичните данни. Ако декларираме методите и класовете като публични, те също нарушават принципа на капсулиране . Можем да го използваме и с класове от най-високо ниво.
Нека използваме спецификатора за частен достъп в 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 категоризира видимостта за членовете на класа, както следва:
- Подкласове в същия пакет
- Не-подкласове в същия пакет
- Подкласове в различни пакети
- Класове нито в същия пакет, нито подкласове
Кое да използваме?
Трябва да използваме модификатор за публичен достъп, ако искаме да направим метода или свойството видими от всяко място, други класове и екземпляри на обекта. Използвайте модификатора за частен достъп, ако искате да направите метода или свойството видими само в неговия собствен клас. Избягвайте публичните полета, с изключение на константите.