- Modificador d'accés privat
- Rol del constructor privat
- Modificador d'accés per defecte
- Modificador d'accés protegit
- Modificador d'accés públic
- Modificador d'accés amb substitució de mètodes
Hi ha dos tipus de modificadors a Java: modificadors d'accés i modificadors sense accés .
Els modificadors d'accés a Java especifiquen l'accessibilitat o l'abast d'un camp, mètode, constructor o classe. Podem canviar el nivell d'accés de camps, constructors, mètodes i classe aplicant-hi el modificador d'accés.
Hi ha quatre tipus de modificadors d'accés Java:
Hi ha molts modificadors que no són d'accés, com ara estàtics, abstractes, sincronitzats, natius, volàtils, transitoris, etc. Aquí, només aprendrem els modificadors d'accés.
Entendre els modificadors d'accés de Java
Entenem els modificadors d'accés a Java mitjançant una taula senzilla.
Modificador d'accés | dins la classe | dins del paquet | paquet extern només per subclasse | paquet exterior |
---|---|---|---|---|
Privat | I | N | N | N |
Per defecte | I | I | N | N |
Protegit | I | I | I | N |
Públic | I | I | I | I |
1) Privat
El modificador d'accés privat només és accessible dins de la classe.
java convertir char a int
Exemple senzill de modificador d'accés privat
En aquest exemple, hem creat dues classes A i Simple. Una classe conté un membre de dades privats i un mètode privat. Estem accedint a aquests membres privats des de fora de la classe, de manera que hi ha un error en temps de compilació.
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 } }
Rol del constructor privat
Si feu que qualsevol constructor de classe sigui privat, no podeu crear la instància d'aquesta classe des de fora de la classe. Per exemple:
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 } }
Nota: Una classe no pot ser privada ni protegida excepte classe imbricada.
2) Per defecte
Si no feu servir cap modificador, es tractarà com per defecte per defecte. El modificador per defecte només és accessible dins del paquet. No es pot accedir des de fora del paquet. Proporciona més accessibilitat que privada. Però, és més restrictiu que protegit i públic.
python ordena tupla
Exemple de modificador d'accés predeterminat
En aquest exemple, hem creat dos paquets pack i mypack. Estem accedint a la classe A des de fora del seu paquet, ja que la classe A no és pública, de manera que no es pot accedir des de fora del paquet.
//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 } }
A l'exemple anterior, l'abast de la classe A i el seu mètode msg() és per defecte, de manera que no es pot accedir des de fora del paquet.
3) Protegit
El modificador d'accés protegit és accessible dins del paquet i fora del paquet, però només mitjançant l'herència.
El modificador d'accés protegit es pot aplicar al membre de dades, mètode i constructor. No es pot aplicar a la classe.
Proporciona més accessibilitat que el modificador predeterminat.
Exemple de modificador d'accés protegit
En aquest exemple, hem creat els dos paquets pack i mypack. El paquet A class of pack és públic, de manera que es pot accedir des de fora del paquet. Però el mètode msg d'aquest paquet es declara com a protegit, de manera que només es pot accedir des de fora de la classe mitjançant l'herència.
//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) Públic
El modificador d'accés públic és accessible a tot arreu. Té l'abast més ampli entre tots els altres modificadors.
Exemple de modificador d'accés públic
//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
Modificadors d'accés de Java amb substitució de mètodes
Si esteu anul·lant qualsevol mètode, el mètode anul·lat (és a dir, declarat a la subclasse) no ha de ser més restrictiu.
patró de disseny del constructor
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(); } }
El modificador per defecte és més restrictiu que protegit. Per això, hi ha un error en temps de compilació.