logo

Модификатори приступа у Јави

  1. Модификатор приватног приступа
  2. Улога приватног конструктора
  3. Подразумевани модификатор приступа
  4. Модификатор заштићеног приступа
  5. Модификатор јавног приступа
  6. Модификатор приступа са заменом метода

Постоје две врсте модификатора у Јави: модификатори приступа и модификатори без приступа .

Модификатори приступа у Јави одређују приступачност или опсег поља, метода, конструктора или класе. Можемо да променимо ниво приступа поља, конструктора, метода и класе применом модификатора приступа на њих.

Постоје четири типа Јава модификатора приступа:

    Приватни: Ниво приступа приватног модификатора је само унутар класе. Не може се приступити изван разреда.Уобичајено: Ниво приступа подразумеваног модификатора је само унутар пакета. Не може се приступити изван пакета. Ако не наведете ниједан ниво приступа, он ће бити подразумевани.Заштићено: Ниво приступа заштићеног модификатора је унутар пакета и ван пакета преко подређене класе. Ако не направите дечију класу, не можете јој приступити изван пакета.Јавно: Ниво приступа јавног модификатора је свуда. Може му се приступити из класе, ван класе, унутар пакета и ван пакета.

Постоји много модификатора без приступа, као што су статички, апстрактни, синхронизовани, изворни, променљиви, пролазни, итд. Овде ћемо научити само модификаторе приступа.


Разумевање Јава модификатора приступа

Хајде да разумемо модификаторе приступа у Јави помоћу једноставне табеле.

Модификатор приступаунутар разредаунутар пакетаспољни пакет само по подкласамаспољни пакет
Приватни ИННН
Уобичајено ИИНН
Заштићено ИИИН
Јавно ИИИИ

1) Приватни

Модификатор приватног приступа је доступан само унутар класе.

миливецрицкет алтернатива

Једноставан пример модификатора приватног приступа

У овом примеру смо креирали две класе А и Симпле. Класа садржи члан приватних података и приватни метод. Овим приватним члановима приступамо изван класе, тако да постоји грешка у времену компајлирања.

 class A{ private int data=40; private void msg(){System.out.println('Hello java');} } public class Simple{ public static void main(String args[]){ A obj=new A(); System.out.println(obj.data);//Compile Time Error obj.msg();//Compile Time Error } } 

Улога приватног конструктора

Ако било који конструктор класе учините приватним, не можете креирати инстанцу те класе изван класе. На пример:

 class A{ private A(){}//private constructor void msg(){System.out.println('Hello java');} } public class Simple{ public static void main(String args[]){ A obj=new A();//Compile Time Error } } 

Напомена: Класа не може бити приватна или заштићена осим угнежђене класе.


2) Подразумевано

Ако не користите модификатор, он се третира као Уобичајено подразумевано. Подразумевани модификатор је доступан само унутар пакета. Не може се приступити изван пакета. Пружа више приступа него приватно. Али, више је рестриктивније него заштићено и јавно.

јава8 карактеристике

Пример подразумеваног модификатора приступа

У овом примеру смо креирали два пакета пацк и мипацк. Приступамо А класи изван њеног пакета, пошто А класа није јавна, тако да јој се не може приступити изван пакета.

 //save by A.java package pack; class A{ void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B{ public static void main(String args[]){ A obj = new A();//Compile Time Error obj.msg();//Compile Time Error } } 

У горњем примеру, опсег класе А и њен метод мсг() су подразумевани тако да му се не може приступити изван пакета.


3) Заштићени

Тхе модификатор заштићеног приступа је доступан унутар пакета и ван пакета, али само кроз наслеђивање.

Модификатор заштићеног приступа може се применити на члан података, метод и конструктор. Не може се применити на разреду.

Пружа већу приступачност од подразумеваног модификатора.

Пример модификатора заштићеног приступа

У овом примеру смо креирали два пакета пацк и мипацк. А класа пакета је јавна, па јој се може приступити изван пакета. Али мсг метод овог пакета је декларисан као заштићен, тако да му се може приступити изван класе само путем наслеђа.

нова линија питона
 //save by A.java package pack; public class A{ protected void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B extends A{ public static void main(String args[]){ B obj = new B(); obj.msg(); } } 
 Output:Hello 

4) Јавно

Тхе модификатор јавног приступа је доступан свуда. Има најшири обим међу свим осталим модификаторима.

Пример модификатора јавног приступа

 //save by A.java package pack; public class A{ public void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B{ public static void main(String args[]){ A obj = new A(); obj.msg(); } } 
 Output:Hello 

Јава модификатори приступа са заменом метода

Ако замењујете било коју методу, замењена метода (тј. декларисана у подкласи) не сме бити рестриктивнија.

 class A{ protected void msg(){System.out.println('Hello java');} } public class Simple extends A{ void msg(){System.out.println('Hello java');}//C.T.Error public static void main(String args[]){ Simple obj=new Simple(); obj.msg(); } } 

Подразумевани модификатор је више рестриктиван него заштићен. Због тога постоји грешка у времену компајлирања.