Въведение в модификаторите за достъп в Java

Както всички знаем, Java е един от най-добрите езици за програмиране в света. Милиарди устройства разчитат на него през последните две десетилетия. Java е бърз, надежден, безопасен и мултиплатформен език. Java работи на всяко устройство, стига да има Java Runtime (JRE), което го прави мултиплатформен, бърз и надежден език. Модификаторът на достъп е собственост на java, което го прави безопасен в многоплатформата. Java осигурява безопасност на ниво клас (по време на капсулиране) на програмиста, като използва свойството на модификатор на достъп. Според книгата, Class е чертежът за изграждане на обект в Java, което го прави 'Building block' за програмата, тъй като Java е обектно-ориентиран език. Модификатор на достъп указва как всеки клас може да получи достъп до даден клас и неговите полета, конструктори и методи в рамките и различни пакети. Клас, полета, конструктори и методи могат да имат един от четирите различни модификатора на достъп до Java.

  • частен
  • обществен
  • Защитена
  • По подразбиране - не се изисква ключова дума.

Различни модификатори за достъп в Java

Следващата таблица обобщава как можем да приложим модификатори за достъп до Java към програмата:

МодификаторикласПакетиПодклассвят
частенYннн
общественYYYY
ЗащитенаYYYн
По подразбиранеYYнн

Ще покрием всеки модификатор за достъп до Java в следващите раздели.

1) По подразбиране

Когато който и да е клас, членове на данните и променливата се декларира, като не се записва с модификатор на достъп, тогава той се задава на модификатор за достъп по подразбиране. „Модификатор на достъп“ по подразбиране означава, че кодът във всеки клас може да получи достъп до цялата програма в един и същ пакет.

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

Пример №1:

//Java program to show the default modifier.
package Test;
//Where Class eduCBA is having Default access modifier as no access modifier is specified here
class eduCBA
(
void display ()
(
System.out.println("Hello World!");
)
)

изход:

Здравей свят!

Пример №2:

//Java program to show error while using class from different package with default modifier
package test2;
import test.*;
//This class check is having default access modifier
class Check
(
public static void main(String args())
(
//accessing class eduCBA from package test
eduCBA obj = new eduCBA();
obj.display();
)
)

изход:

Грешка във времето за компилиране.

2) Защитени

Синтаксисът „защитен“ се използва от потребителите, когато искат да използват този модификатор на достъп.

  • Този модификатор на достъп е достъпен само в един и същ пакет или в същите подкласове в различни класове (но потребителите трябва да импортират този пакет там, където е посочен).
  • Потребителят не може да маркира клас и интерфейси с „защитен“ модификатор на достъп. Въпреки това, Методи и полета могат да бъдат декларирани като защитени, ако методите и полетата са в интерфейс.

Например:

//Java program to show to protected access modifier
package test;
//Class eduCBA
public class eduCBA
(
protected void display ()
(
System.out.println("Hello World!");
)
)
//Java program to show to protected modifier in same sub-classes of different packages
package test2;
import test.*;
//Class pro is subclass of eduCBA
class pro extends eduCBA
(
public static void main(String args())
(
pro obj = new pro();
obj.display();
)
)

изход:

Здравей свят!

3) публична

Потребителят може да декларира клас, метод, конструктор и интерфейс с „публичен“ модификатор на достъп, който може да осъществява достъп от всеки клас, метод, конструктор и интерфейс в рамките на или различни пакети.

  • Този модификатор на достъп има Безгранично сред всички модификатори.
  • Когато всеки клас, методи или пакет, маркирани с модификатор за обществен достъп, където е достъпен за всички отвсякъде от програмата.
  • Няма ограничения за обхвата на „обществен“ клас на достъп, методи.

Например: -

//Java program to show to public access modifier
package test;
public class eduCBA
(
public void display ()
(
System.out.println("Hello World!");
)
)
package test2;
import test.*;
class pub
(
public static void main (String args ())
(
eduCBA obj = new eduCBA ();
obj.display ();
)
)

изход:

Здравей свят!

4) Частен

Когато метод или променлива, маркирани като „частни“ модификатори за достъп, тогава кодът в същия клас може да има достъп само до тези методи и променливи.

Потребителят не може да декларира никакъв суперклас с модификатор за достъп на частни лица в програмата и ако потребителят го направи с който и да е клас, тогава той прави този клас недостъпен за всеки друг клас в същия пакет, което прави клас никакъв от полза, въпреки че потребителят може да декларира променливи и методи в клас с „частен“ модификатор на достъп, така че никой не може да използва тези променливи и методи.

Понякога хората се объркват с „частен“ и „защитен“ модификатор на достъп, но и двамата са различни.

Например: -

//Program to show error while using a class from different packages with private modifier.
package test;
class eduCBA
(
private void display()
(
System.out.println("Hello World!");
)
)
class Check
(
public static void main (String args())
(
eduCBA obj = new eduCBA();
//make class check to access private method of another class eduCBA.
obj.display();
)
)

изход:

грешка: display () има частен достъп в eduCBA obj.display ();

заключение

Модификаторът на достъп до Java ви дава допълнително предимство пред вашата програма, когато я направите публично достояние. Както проучваме по-горе, Различни видове модификатори на достъп в JAVA и тяхната спецификация.

Затова имайте предвид всеки път, когато използвате един от тях като достъп до клас или интерфейс, тъй като те не само предоставят достъп, но и ги отменя. Въпреки че винаги има опасения относно достъпността на метода в програмата. Например, ако на интерфейс е зададен модификатор за достъп по подразбиране в надклас, тогава е разрешено да се отменят модификатори за достъп, използвани в подкласа на метода.

Забележка: Класът включва променливи, конструктори, полета и методи, а интерфейсът включва специфични полета или методи.

Препоръчителни статии

Това е ръководство за Модификатори за достъп в Java. Тук обсъждаме различните видове модификатори на достъп в Java и тяхната спецификация. Можете да разгледате и другите ни предложени статии, за да научите повече -

  1. Обектно-ориентирано програмиране в Java
  2. Въпроси за интервю на Java
  3. Какво е синхронизация в Java?
  4. Автобоксиране и Дебоксиране в Java
  5. Модификатори за достъп в C ++ (типове)
  6. Невероятно ръководство за достъп до модификатори в C #
  7. Достъп Модификатори в PHP
  8. JRE срещу JVM | Топ 8 разлики с (Инфографика)