|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Aug 2006
Messaggi: 244
|
[JAVA]modificatori PUBLIC, PRIVATE, PROTECTED
Come da titolo, vorrei sapere bene le differenze tra i modificatori: PUBLIC, PRIVATE, PROTECTED.
Possibilmente facendomi degli esempi banali di codice java. ![]() Ringrazio in anticipo ![]() |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: May 2009
Messaggi: 129
|
public:
puoi accedere al campo/metodo dichiarato con modificatore public da qualsiasi classe esterna alla classe in cui il campo/metodo pubblico è dichiarato(è pubblico) private: puoi accedere al campo/metodo dichiarato con modificatore private, solo dalla stessa classe in cui il campo o il metodo è dichiarato(è privato) protected: puoi accedere al campo/metodo dichiarato con modificatore protected solo da classi che sono in rapporto di ereditarietà con la classe che dichiara il campo/metodo protected(protetto). P.s.: Questo in linea di massima.Sul modificatore protected forse c'e' qualcosa da aggiungere,ma su google trovi davvero di tutto! ciao |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2773
|
Provo a spiegartelo in maniera informale con degli esempi. Considera ogni classe in un file a sé.
PUBLIC Codice:
public class A{ public int a; } Codice:
public class B{ public static void main(String[] args){ A ogg=new A(); ogg.a=10; //Accedo direttamente al membro a } } Codice:
public class A{ private int a; public void setA(int val){if(val>=0) a=val;} public int getA(){return a;} } Codice:
public class B{ public static void main(String[] args){ A ogg=new A(); //ogg.a=10; Il compilatore mi darebbe errore perché a non è accessibile ogg.setA(10); ogg.setA(-1); //Il metodo setter impedisce il settaggio di valori negativi (è un esempio) System.out.println(ogg.getA()); //Stamperà 10 } } Non l'ho ancora mai usato in qualche progetto, quindi non prendere per oro colato questi esempi Codice:
package mio.package; public class A{ protected int a; } Codice:
package mio.package; public class B{ public static void main(String[] args){ A ogg=new A(); ogg.a=10; //Posso accedere al membro a perché A è nello stesso package di B } } Codice:
package tuo.package; public class B{ public static void main(String[] args){ A ogg=new A(); ogg.a=10; //Errore di compilazione, non posso accedere al membro a perché A si trova in un altro package } } Codice:
package suo.package; public class B extends A{ public static void main(String[] args){ A ogg=new A(); ogg.a=10; //Posso accedere al membro a perché anche se A si trova in un altro package B la estende } } http://java.sun.com/docs/books/tutor...sscontrol.html |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:32.