Errore con super() in classe ereditata

di il
3 risposte

Errore con super() in classe ereditata

Salve, alla voce super mi dà errore e non riesco a capire il perchè :
public Manager() {super();}
	public Manager(String name, String surname, int ID,String CF, String placeOfBirth,String sex,Date data,String address,String matricola, int ruolo, int titoloStudio,double stipendio,String areaResponsabilità)

	{
		super(name, surname, ID, CF,  placeOfBirth, sex, data, address, matricola, ruolo, titoloStudio,stipendio);
		this.areaResponsabilità=areaResponsabilità;
	}
questo manager eredita da dipendente che a sua volta eredita da persona ed è strutturato in questo modo :
public Dipendente() {};
	public Dipendente (String name, String surname, int ID,String CF, String placeOfBirth,String sex,Date data,String address) {
		super (name, surname,  ID, CF, placeOfBirth, sex, data,address);
		
	}
public Persona() {};
	
	public Persona(String name, String surname, int ID,String CF, String placeOfBirth,String sex,Date data,String address){
		this.name = name;
		this.surname=surname;
		this.ID=ID;
		this.CF=CF;
		this.placeOfBirth=placeOfBirth;
		this.sex=sex;
		this.data=data;
		this.address=address;
	}
Cosa sbaglio ? Grazie

3 Risposte

  • Re: Errore con super() in classe ereditata

    Non vorrei dire una bestialità, ma quando invochi super esegui di fatto il costruttore della classe base e gli devi passare tutti i parametri che tale costruttore definisce.
    Nel tuo caso da Manager invochi il costruttore di Dipendente con
    super(name, surname, ID, CF, placeOfBirth, sex, data, address, matricola, ruolo, titoloStudio,stipendio);

    Ma il costruttore della classe Dipendente accetta i parametri:
    public Dipendente (String name, String surname, int ID,String CF, String placeOfBirth,String sex,Date data,String address)

    Non mi par corrispondano.
  • Re: Errore con super() in classe ereditata

    morellik ha scritto:


    Non vorrei dire una bestialità, ma quando invochi super esegui di fatto il costruttore della classe base e gli devi passare tutti i parametri che tale costruttore definisce.
    Nel tuo caso da Manager invochi il costruttore di Dipendente con
    super(name, surname, ID, CF, placeOfBirth, sex, data, address, matricola, ruolo, titoloStudio,stipendio);

    Ma il costruttore della classe Dipendente accetta i parametri:
    public Dipendente (String name, String surname, int ID,String CF, String placeOfBirth,String sex,Date data,String address)

    Non mi par corrispondano.
    E' esattamente così.
    super() richiama il costruttore della classe base. Quindi, vanno passati tutti e soli i parametri che quest'ultimo si aspetta. Non è possibile passargliene di più (ovviamente), né di meno (a meno che la classe base non preveda anche un costruttore con meno parametri).

    Ciao.
  • Re: Errore con super() in classe ereditata

    Corretto stesso nella giornata , poi Grazie comunque per le risposte
Devi accedere o registrarti per scrivere nel forum
3 risposte