Abstract Extends et Super...

Abstract Extends et Super... - Java - Programmation

Marsh Posté le 31-12-2006 à 14:11:43    

Bonjour tout le monde!  
 
J'ai besoin d'aide pour un petit programme en java :  
 
J'ai une classe Personne :  
public abstract class Personne {  
protected String nomP;  
protected boolean estHomme;  
protected int age;  
protected String grade;  
 
public boolean equals(Object p) {  
if (p instanceof Personne)  
return (this.nomP).equals(((Personne)p).nomP);  
else return false;  
}  
 
public String getNomP() {  
return nomP;  
}  
}

 
J'ai une classe Operateur qui hérite de Personne :  
 
public class Operateur extends Personne {  
[#f0000e]public Operateur (String nomP, boolean estHomme, int age, String grade){ .....  
}[#e2001c]
 
public String toString() {  
if (estHomme)  
return "Nom : " +nomP+ " / Sexe : Homme / Age : "+age+ " / Grade : " +grade + " / Opérateur \n ";  
else return "Nom : " +nomP+ " / Sexe : Femme / Age : "+age+ " / Grade : " +grade+ " / Opérateur \n ";  
}  
}

 
Mon problème c'est que je n'arrive pas définir le constructeur de Operateur, je voulais faire appel à SUPER mais je ne peux pas car je n'ai pas de constructeur dans Personne... Alors comment dois-je faire pour accéder aux attributs de Personne?  
 
Si quelqu'un comprend ce dont je parle, répondez-moi vite!!!  
 
Merci beaucoup,  
A bientôt!

Reply

Marsh Posté le 31-12-2006 à 14:11:43   

Reply

Marsh Posté le 01-01-2007 à 14:02:58    

Super(), c'est pour appeler la fonction qu'on est en train de réécrire en héritant ... Je ne vois pas trop le rapport avec les attributs.


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
Reply

Marsh Posté le 01-01-2007 à 22:39:02    

3fany a écrit :

Alors comment dois-je faire pour accéder aux attributs de Personne?  


Sachant que tu as déclaré les champs de Personne en protected, tu peux y accéder dans les classes qui héritent de Personne.
 
http://java.sun.com/docs/books/tut [...] ntrol.html

Reply

Marsh Posté le 02-01-2007 à 12:39:40    

Tu dois tout d'abord créer un constructeur dans la classe père.
 
Après écrit dans la classe père les méthodes suceptible d'être commune à toute les classes filles comme son adresse, son age etc...

Reply

Marsh Posté le 02-01-2007 à 13:44:44    

angelx24 a écrit :

Tu dois tout d'abord créer un constructeur dans la classe père.


La classe Personne est abstraite, elle ne peut être instanciée.
 
3fany > Pour quelle raison as-tu déclaré la classe Personne abstraite ?

Message cité 1 fois
Message édité par charly007 le 02-01-2007 à 13:45:37
Reply

Marsh Posté le 03-01-2007 à 09:22:22    

charly007 a écrit :

La classe Personne est abstraite, elle ne peut être instanciée.


 
c'est pas incompatible


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 03-01-2007 à 20:19:43    

brisssou a écrit :

c'est pas incompatible


En effet, j'ai appris quelque chose aujourd'hui  :D

Reply

Marsh Posté le 04-01-2007 à 10:45:27    

bref de bref, angelx24 avait raison, faut d'abord définir le constructeur de Personne, qui prend (nom, sexe, age... toussa) en paramètre.
 
ensuite j'imagine que ta classe Operateur va définir d'autres attributs, sinon, peut-être qu'un attribut métier dans Personne... enfin à voir quoi.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 04-01-2007 à 12:38:49    

La classe père aura son constructeur, le fait de la déclarer en tant qu'abstract est simplement que l'on a de nombreuses classe qui vont en dérivé.
 
Donc chaque classe dérivé va faire appel au constructeur de la classe père via "super".
 
Genre :
 
Classe père "Personne" : age, nom, adresse (commun à toute personnes).
 
Classe fille "Opérateur" qui hérite de tous les attributs de la classe personne et qui bénéficie de ses propres attributs.
 
ex:
 
public abstract class Personne {  
protected String nomP;  
protected int age;  
protected boolean homme = false;
 
public Personne(String nom, int ag, boolean sexe) {
if (nom != null)  this.nomP = nom;
this.age = ag;
this.homme = sexe;
}
 
public boolean equals(Object p) {  
if (p instanceof Personne)  
return (this.nomP).equals(((Personne)p).nomP);  
else return false;  
}  
 
public String getNomP() {  
return nomP;  
}  
}  
 
public Opérateur extends Personne {
 
int grade = -1;
 
public Opérateur (String n, int ag, boolean sexe, int grade) {
super(n, ag, sexe);
this.grade = grade;
 
etc...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed