Newsgroup: it.comp.java
Titolo: Private & protected

che differenza c'è tra un dato private e uno protected ?
grazie

 grazie
se la memoria non mi inganna il protected permette di far
vedere il dato (o meglio una proprieta' o un metodo) alle altre
classi appartenenti al package, mentre private da' visibilita'
solo all'interno della classe in cui viene dichiarato.
libero di essere smentito, java lo sto imparando :D

 grazie
In java si hanno 4 modificatori di accesso:
(1) Private
(2) Default
(3) Protected
(4) Public
Tutti si possono applicare sua a metodi, che costruttori (che sono metodi
speciali) che attributi.
(1) il dato (dove con dato intendo metodo/costruttore/attributo) è
visibile solo alla classe in cui è contenuto
(2) E applicato quando non specifichi nessuno modificatore di accesso. Il
dato è visibile alla classe in cui è contenuto, alle classi che ereditano
da questa e tutte le altre classi all'interno dello stesso package.
(3) Come (2) ma visibile anche alle classi di altri package che ereditano
dalla classe con il dato
(4) Visibile a tutti
Su quando utilizzarli ti rimando ad un manuale di teoria di programmazione
ad oggetti:)
Ciao D.
Inviato da 
www.mynewsgate.net

 da questa e tutte le altre classi all'interno dello stesso package.
Dimenticavo, se con il default erediti la classe da un'altro package, non
hai visibilità del dato (se non ricordo male).
Inviato da 
www.mynewsgate.net

 ha scritto nel messaggio
news:200403250...@mynewsgate.net...


 grazie
Visibilità.
Private, è visibile solo all'interno delle istanze della classe in cui è 
dichiarato.
Protected, è visibile all'interno delle istanze della classe e dei suoi 
eredi.
In entrambi i casi, non è visibile dalle istanze di altre classi (stesso 
package o no).

 package o no).
Mi ricordavo di averlo studiato.
Mi dispiace contraddirti Vincent! :)
prova i codici qui di seguito.
Ciao D.
package package1;
import package2.Classe2;
public class Classe1 extends Classe2{
	public Classe1() {
		super();
//		System.out.println(this.i1);	//errore filed not visible
//		System.out.println(this.i2);	//errore filed not visible
		System.out.println(this.i3);
		System.out.println(this.i4);
 
		Classe2 c2 = new Classe2();
//		System.out.println(c2.i1);	//errore filed not visible
//		System.out.println(c2.i2);	//errore filed not visible
//		System.out.println(c2.i3);	//errore filed not visible
		System.out.println(c2.i4);
	}
}
package package2;
public class Classe2 {
	private int i1;
	int i2;
	protected int i3;
	public int i4;
 
	public Classe2() {
		super();
		// TODO Auto-generated constructor stub
	}
}
package package2;
public class Classe3 {
	public Classe3() {
		super();
		// TODO Auto-generated constructor stub
		Classe2 c2 = new Classe2();
 
//		System.out.println(c2.i1); //errore filed c2.i1 non visibile
		System.out.println(c2.i2);
		System.out.println(c2.i3);
		System.out.println(c2.i4);		
	}
}
Inviato da 
www.mynewsgate.net

mancava l'ultimo esempio di ereditarietà all'interno dello stesso package
per far vedere che a differenza di ereditarietà cross-package, prende anche
i dati con accesso default.
Ciao D.
package package2;
public class Classe4 extends Classe2{
	public Classe4() {
		super();
		// TODO Auto-generated constructor stub
//		System.out.println(this.i1); //errore field not visible
		System.out.println(this.i2);
		System.out.println(this.i3);
		System.out.println(this.i4);
	}
}
Inviato da 
www.mynewsgate.net


private = visibile solo a quella classe
protected = visibile sottoclassi e classi dello stesso package.
I dati private non sono ereditati.