Pages : 1
#1 Le 11/11/2007, à 21:45
- x@v
[JAVA]constructeur
Bonjour,
j'ai un problème de constructeur que je ne comprend pas bien ?
Ma super CLass
package poly;
public class Etudiant {
String nom;
String prenom;
String age;
public Etudiant(String nom, String prenom, String age)
{
this.nom = nom;
this.prenom = prenom;
this.age = age;
}
public void affiche()
{
System.out.println(
"Nom : " + nom + "\n" + "Prénom : " + prenom + "\n Age : " + age);
}
}
et la class hériter qui me pose problème avec ce message d'erreur sur la signature "public EtudiantSportif(String sport)"
Implicit super constructor Etudiant() is undefined. Must explicitly invoke
another constructor
package poly;
public class EtudiantSportif extends Etudiant
{
String sport;
public EtudiantSportif(String sport)
{
this.sport = sport;
}
public void affiche()
{
super.affiche();
System.out.println("Sport : " + sport);
}
}
Merci
Dernière modification par x@v (Le 11/11/2007, à 21:47)
[-- qwerty user --]
Hors ligne
#2 Le 11/11/2007, à 21:50
- jAr0d
Re : [JAVA]constructeur
Salut,
Il me semble qu'en Java, quand tu définis un constructeur différent du constructeur par défaut, il faut alors redéfinir le constructeur sans arguments :
package poly;
public class Etudiant {
String nom;
String prenom;
String age;
public Etudiant()
{
}
public Etudiant(String nom, String prenom, String age)
{
this.nom = nom;
this.prenom = prenom;
this.age = age;
}
public void affiche()
{
System.out.println(
"Nom : " + nom + "\n" + "Prénom : " + prenom + "\n Age : " + age);
}
}
Même si ce dernier ne fait rien de particulier. C'est à confirmer... ça fait très longtemps que je n'ai pas fait de Java :-)
Kubuntu 7.10
Toshiba Satellite A100-788
Linux, plus qu'un OS, une passion...
Hors ligne
#3 Le 11/11/2007, à 21:54
- x@v
Re : [JAVA]constructeur
C'est la classe "EtudiantSportif" qui me pose problème.
Un constructeur est implicitement mis pas défault si je n'en définis pas.
C'était peut être dans une vieille version que c'était comme ça.
Pour ma part je me fait un exercice pour bien comprendre le pokymorphisme. Et il me faut trois class...
une héritant de sa super class et une dernière central qui appelle une des deux autres à travers des variables typés des deux autres qui sont instancié dans les méthode de la class centrale.
Je veux voir les effets du polymorphisme.
Dernière modification par x@v (Le 11/11/2007, à 21:58)
[-- qwerty user --]
Hors ligne
#4 Le 11/11/2007, à 22:09
- jAr0d
Re : [JAVA]constructeur
En essayant d'interpréter le message d'erreur, il semblerait que le compilateur ne trouve pas le super constructeur de la classe parente, celui-ci n'étant pas défini.
En effet si tu n'as pas défini de constructeur dans ta classe EtudiantSportif, il en créé un par défaut. Le comportement par défautd de ce constructeur sera d'appeler le constructeur par défaut (sans arguments) de la classe parente, qui n'est donc pas défini.
Essai de faire la modif que je t'ai indiqué plus haut et si ça ne fonctionne pas, alors redéfini le constructeur par défaut de ta classe EtudiantSportif en lui faisant appeler explicitement le constructeur parent qui a été défini :
super("nom", "prenom", "age");
Et vois ce que ça donne.
Kubuntu 7.10
Toshiba Satellite A100-788
Linux, plus qu'un OS, une passion...
Hors ligne
#5 Le 11/11/2007, à 22:36
- x@v
Re : [JAVA]constructeur
le constructeur vide ne fait rien, par contre sa fonctionne avec l'appelle du constructeur parent.
Mais du coup sa me complique l'avis pour comprendre le polymorphisme ?
j'ai un Main
package poly;
public class Main {
/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
GroupeTD td1 = new GroupeTD();
td1.ajouter(new Etudiant("artot", "xavier", "37"));
td1.ajouter(new EtudiantSportif());
td1.afficherListe();
}
}
puis
package poly;
public class GroupeTD {
// la classe Etudiant doit être dans le même package pour typer le tableau
Etudiant[] liste = new Etudiant[30];
int nbEtudiants = 0;
public void ajouter(Etudiant e)
{
if (nbEtudiants < liste.length)
liste[nbEtudiants++] = e;
}
public void afficherListe()
{
for (int i=0;i<nbEtudiants; i++)
liste[i].affiche();
}
}
En faite ces 4 fichiers devait m'aider à comprendre mais sa m'embrouille...
parce que j'ai ma liste qui affiche le sport à null ?
Nom : artot
Prénom : xavier
Age : 37
Sport : null
Dans cette image on peux voir qu'il instancie
EtudiantSportif("BIDULE",...) Mais je n'arrive pas à reproduire ce shémas ?
http://xavier.artot.free.fr/Capture.png
Dernière modification par x@v (Le 12/11/2007, à 00:27)
[-- qwerty user --]
Hors ligne
Pages : 1