Abstract Extends et Super... - Java - Programmation
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.
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
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...
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 ?
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
Marsh Posté le 03-01-2007 à 20:19:43
ReplyMarsh 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.
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...
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!