- Модификатор приватног приступа
- Улога приватног конструктора
- Подразумевани модификатор приступа
- Модификатор заштићеног приступа
- Модификатор јавног приступа
- Модификатор приступа са заменом метода
Постоје две врсте модификатора у Јави: модификатори приступа и модификатори без приступа .
Модификатори приступа у Јави одређују приступачност или опсег поља, метода, конструктора или класе. Можемо да променимо ниво приступа поља, конструктора, метода и класе применом модификатора приступа на њих.
Постоје четири типа Јава модификатора приступа:
Постоји много модификатора без приступа, као што су статички, апстрактни, синхронизовани, изворни, променљиви, пролазни, итд. Овде ћемо научити само модификаторе приступа.
Разумевање Јава модификатора приступа
Хајде да разумемо модификаторе приступа у Јави помоћу једноставне табеле.
Модификатор приступа | унутар разреда | унутар пакета | спољни пакет само по подкласама | спољни пакет |
---|---|---|---|---|
Приватни | И | Н | Н | Н |
Уобичајено | И | И | Н | Н |
Заштићено | И | И | И | Н |
Јавно | И | И | И | И |
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(); } }
Подразумевани модификатор је више рестриктиван него заштићен. Због тога постоји грешка у времену компајлирања.