Oppure

Loading
13/01/11 15:16
f.l.c.r
Salve,

ho le seguenti classi:

public class Persona {
	
	private String nome;
	
	
	// Tutte queste sono proprietà comuni ad un oggetto di tipo persona
	public Persona(){
		nome =null;
	}
	
	public Persona(String nuovoNome){
		nome = nuovoNome;
	}
	
	public void setNome(String nuovoNome){
		nome = nuovoNome;
	}
	
	public String getNome(){
		return nome;
	}
	
	public void temp(){
		scriviOutput();
	}
	
	protected void scriviOutput(){
		System.out.println("Nome: " + nome);
	}
	
	public boolean similEquals(Persona altraPersona){
		return this.nome.trim().equalsIgnoreCase(altraPersona.nome.trim());
	}
	
}



public class Studente extends Persona {
	
	protected int matricola;
	
	public Studente(){
		super();
		matricola =0;
	}
	
	public Studente(String nomeIniziale, int matricola){
		super(nomeIniziale);
		this.matricola = matricola;
	}
	
	public void reimposta(String nuovoNome, int nuovaMatricola){
		setNome(nuovoNome);
		matricola = nuovaMatricola;
	}
	
	public int getMatricola(){
		return matricola;
	}
	
	public void setMatricola(int nuovaMatricola){
		matricola = nuovaMatricola;
	}
	
	public boolean equals(Studente altroStudente){
		return this.similEquals(altroStudente) && this.matricola == altroStudente.getMatricola();
	}
}




public class Main {


	public static void main(String[] args) {
		
		Persona pers = new Persona();
		
		pers.setNome("Filippo");
		System.out.println(pers.getNome());
		System.out.println();
		System.out.println("Metodo scrivioutput");
		pers.scriviOutput();
		
		Persona altraPersona = new Persona();
		altraPersona.setNome("Filippo");
		System.out.println(pers.similEquals(altraPersona));
		
		Persona stude = new Studente();
		
		System.out.println(stude.getNome());
		
		Studente nuovo = new Studente();
	
		
		nuovo.setMatricola(5);
		System.out.println(nuovo.getMatricola());
		nuovo.scriviOutput();
		
		//nuovo = altraPersona;
	
		altraPersona = nuovo;
	
		altraPersona.scriviOutput();
		
		nuovo.scriviOutput();
		
		nuovo.matricola = 5;
	}



Il modificatore di accesso private dovrebbe garantire visibilità nelle Classe stessa in cui è definito e nelle sottoclassi di quella classe.

Come mai allora nel metodo main l'istruzione

    
		nuovo.matricola = 5;


viene compilata?

Non dovrebbe vietarne l'accesso essendo di tipo pretected? :_doubt:
aaa
13/01/11 22:53
pierotofy
Main, Persona e Studente sono nello stesso package?

download.oracle.com/javase/tutorial/java/javaOO/…

Ad ogni modo, visto che hai costruito dei getters e setters, non ha nessun senso dichiarare matricola protected, dovrebbe essere private.
Il mio blog: piero.dev