Oppure

Loading
14/11/10 11:11
XBarboX
Salve,
sto imparando la programmazione ad oggetti e sono arrivato all'ereditarietà.
Ho scirtto questo semplice codice salvato nel file Ered.java
class Persona{
	//Attributi
	String nome;
	int eta;
	char sesso;
	String lavoro;
	
	//Metodi
	Persona(String n, int e, char s, String l){
		nome=n;
		eta=e;
		sesso=s;
		lavoro=l;
	}
	
	void Mostra(){
		System.out.println(nome+" ha le seguenti caratteristiche: ");
		System.out.println("Eta': "+eta);
		System.out.println("Sesso: "+sesso);
		System.out.println("Lavoro: "+lavoro);
	}

}

class Supereroe extends Persona{
	//Attributi
	String superpotere;
	int PersoneSalvate;
}

class Ered{
	public static void main(String args[]){
			Supereroe Superpippo = new Supereroe("Superpippo",40,'M',"Aiutare topolino");
			Superpippo.superpotere="Super forza, super velocità, ...";
			Superpippo.Mostra();
	}
}



Però mi da 2 errori:

C:\Sorgenti\Java\Ereditarietà>javac Ered.java
Ered.java:25: cannot find symbol
symbol : constructor Persona()
location: class Persona
class Supereroe extends Persona{
^
Ered.java:33: cannot find symbol
symbol : constructor Supereroe(java.lang.String,int,char,java.lang.String)
location: class Supereroe
Supereroe Superpippo = new Supereroe("Superpippo",40,'M'
,"Aiutare topolino";);
^
2 errors

Cosa sbaglio?
Se ci sono dei possibili miglioramenti potete dirmeli?
aaa
14/11/10 12:25
Bonny
Ho sistemato un pò il codice però premetto che non mi piace è fatto male, però sicuramente tu ti studi le parole chiavi nuove che io ho usato...
in parole povere:
super() richiama il costruttore della classe da cui vogliamo ereditare metodi e proprietà.
@override (polimorfismo)prende il metodo della classe persona lo riscrive. n.b. in questo caso viene in aiuto di nuovo la parola chiave super che richiama il metodo mostra() della classe persona, cosi al nuovo metodo mostra() ho aggiunto una sola istruzione che nell'altro non esiste.
spero di non crearti confusione ma di esserti stato d'aiuto:)

package javaapplication45;

import java.io.*;

public class Main {

    public static void main(String[] args) {
        Persona p = new Persona("Luca", "dentista", 25, 'm');
        p.mostra();
        //Super eroe con metodo dammi poteri
        Supereroe sp = new Supereroe("Andrea", "professore", 34, 'm');
        sp.dammipoteri("super forza, super velocita");
        sp.mostra();
        //Super eroe senza metodo dammi poteri
        Supereroe sp2 = new Supereroe("Antonio", "avvocato", 32, 'm', "super velocia");
        sp2.mostra();
        //Super eroe usando variante metodo mostra
        Supereroe sp3 = new Supereroe("lucia", "medico", 42, 'f', "super forza");
        sp3.mostra();
    }
}

class Persona {

    String nome, lavoro;
    int eta;
    char sesso;

    Persona(String n, String l, int e, char s) {
        nome = n;
        lavoro = l;
        eta = e;
        sesso = s;
    }

    void mostra() {

        System.out.println("\n"+nome + " ha le seguenti caratteristiche: ");
        System.out.println("Eta': " + eta);
        System.out.println("Sesso: " + sesso);
        System.out.println("Lavoro: " + lavoro);
    }
}

class Supereroe extends Persona {

    String poteri;
    int c;

    Supereroe(String n, String l, int e, char s) {
        super(n, l, e, s);
    }
//variante
    Supereroe(String n, String l, int e, char s, String _poteri) {
        super(n, l, e, s);
        poteri = _poteri;
    }
//usando questo come costruttore posso eliminare il metoto
//dammipoteri

    void dammipoteri(String p) {
        poteri = p;
    }

    @Override
    void mostra() {
        super.mostra();
        System.out.println("Poteri :" + poteri);
    }

    //variante senza Override però devo cambiare il nome del metodo
   void mostra2(){
       super.mostra();
        System.out.println("Poteri :" + poteri);
   }
}

}
Ultima modifica effettuata da Bonny 14/11/10 12:26
aaa
15/11/10 12:19
Numa Pompilio
ti posto il link di alcune dispense fatte dal mio prof.
L'argomento è proprio il polimorfismo. Se poi vuoi guardare in giro per il sito, c'è un sacco di roba per imparare cose nuove

dis.uniroma1.it/~fi/upload/file/dispense0910/…
aaa