logo

Modificadors d'accés a Java

  1. Modificador d'accés privat
  2. Rol del constructor privat
  3. Modificador d'accés per defecte
  4. Modificador d'accés protegit
  5. Modificador d'accés públic
  6. 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:

    Privat: El nivell d'accés d'un modificador privat només es troba dins de la classe. No es pot accedir des de fora de la classe.Per defecte: El nivell d'accés d'un modificador per defecte només es troba dins del paquet. No es pot accedir des de fora del paquet. Si no especifiqueu cap nivell d'accés, serà el per defecte.Protegit: El nivell d'accés d'un modificador protegit es troba dins del paquet i fora del paquet mitjançant la classe fill. Si no feu la classe infantil, no es pot accedir des de fora del paquet.Públic: El nivell d'accés d'un modificador públic és a tot arreu. S'hi pot accedir des de dins de la classe, fora de la classe, dins del paquet i fora del paquet.

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ésdins la classedins del paquetpaquet extern només per subclassepaquet exterior
Privat INNN
Per defecte IINN
Protegit IIIN
Públic IIII

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ó.