Problema con Collezioni eterogenee

di il
3 risposte

Problema con Collezioni eterogenee

Buongiorno ragazzi, sto iniziando da poco a studiare Java e ho un problema
riguardo ad un esercizio che sto portando avanti volevo sapere se potreste darmi una mano
l'errore che mi da il compilatore è il seguente vorrei creare arr[0] = new Impiegato(), arr[1] = new Studente();

Main.java:21: error: cannot find symbol
arr[0] = new Impiegato();
^
symbol: class Impiegato
location: class Main
1 error



file name Main.java

public class Main
{
public static void main(String[] args) {
Persona dipendente = new Persona();
dipendente.setEtà(4);
System.out.println(dipendente.getEtà());

Persona arr[] = new Persona[2];
arr[0] = new Impiegato(); //mi da l'errore

}
}



File Persona.java

public class Persona{
public int età;
public String nome;

public void setEtà(int età){
this.età = età;
};
public void setNome(String nome){
this.nome = nome;
};

public int getEtà(){
return età;
}

public String getNome(){
return nome;
}




public class Impiegato extends Persona{
public int stipendio;

public void setStipendio(int stipendio){
this.stipendio = stipendio;
}

public int getStipendio(){
return stipendio;
}
}

public class Studente extends Persona{
public int matricola;
public int prova;
}


}

3 Risposte

  • Re: Problema con Collezioni eterogenee

    A me così funziona:
    
    public class Prova {
    
    	public static void main(String[] args) {
    		Persona dipendente = new Persona();
    		dipendente.setEta(4);
    		System.out.println(dipendente.getEta()); // STAMPA 4
    		
    		Persona arr[] = new Persona[2];
    		arr[0] = new Persona();
    		arr[0].setEta(5);
    		
    		arr[1] = new Persona();
    		arr[1].setEta(6);
    		
    		System.out.println(arr[0].getEta()); // STAMPA 5
    		System.out.println(arr[1].getEta()); // STAMPA 6
    	}
    }
    
    class Persona {
    	private int eta;
    	private String nome;
    	public int getEta() {
    		return eta;
    	}
    	public void setEta(int eta) {
    		this.eta = eta;
    	}
    	public String getNome() {
    		return nome;
    	}
    	public void setNome(String nome) {
    		this.nome = nome;
    	}
    }
    
    class Impiegato extends Persona {
    	private int stipendio;
    	public int getStipendio() {
    		return stipendio;
    	}
    	public void setStipendio(int stipendio) {
    		this.stipendio = stipendio;
    	}
    }
    
    class Studente extends Persona {
    	private int matricola;
    	private int prova;
    	public int getMatricola() {
    		return matricola;
    	}
    	public void setMatricola(int matricola) {
    		this.matricola = matricola;
    	}
    	public int getProva() {
    		return prova;
    	}
    	public void setProva(int prova) {
    		this.prova = prova;
    	}
    }
    
    Nelle classi ho impostato le variabili membro come private.
  • Re: Problema con Collezioni eterogenee

    Persona arr[] = new Persona[2];
    arr[0] = new Persona();
    arr[0].setEta(5);

    xD così anche a me, ma vorrei prendere la reference alla classe impiegato e studente

    cioè

    Persona arr[] = new Persona[2];
    arr[0] = new Impiegato();
    arr[1] = new Studente();
  • Re: Problema con Collezioni eterogenee

    Impiegato e Studente sono sottoclassi di Persona; questo codice funziona ma non ho accesso ai metodi di Impiegato e Studente ma solo di Persona:
    
    	Persona arr[] = new Persona[2];
    	arr[0] = new Impiegato();
    	arr[1] = new Studente();
    
    Aggiungendo i costruttori alle classi:
    
    public class Studente extends Persona {
    
    	private int matricola;
    	private int prova;
    	
    	public Studente() {
    		super();
    	}
    	public Studente(int eta, String nome, int matricola, int prova) {
    		super(eta, nome);
    		this.matricola = matricola;
    		this.prova = prova;
    	}
    	//...
    }
    
    public class Impiegato extends Persona {
    
    	private int stipendio;
    	
    	public Impiegato() {
    		super();
    	}
    	public Impiegato(int eta, String nome, int stipendio) {
    		super(eta, nome);
    		this.stipendio = stipendio;
    	}
    	//...
    }
    
    public class Persona {
    	private int eta;
    	private String nome;
    	
    	public Persona() {
    	}
    	public Persona(int eta, String nome) {
    		super();
    		this.eta = eta;
    		this.nome = nome;
    	}
    	//...
    }
    
    Puoi fare:
    
    	Persona arr[] = new Persona[2];
    	arr[0] = new Impiegato(38, "marameo", 1800);
    	arr[1] = new Studente(38, "marameo", 1, 1);
    
Devi accedere o registrarti per scrivere nel forum
3 risposte