13/01/11 15:16
f.l.c.r
Salve,
ho le seguenti classi:
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
viene compilata?
Non dovrebbe vietarne l'accesso essendo di tipo pretected?
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?
aaa