Vars de ma class fille que je veux récup dans la classe mere
Résolu
Grafiteur
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
Je vous explique mon probléme :
j'ai une classe mere abstract A
et des classes fille B et C
mon modèle stock dans une ArrayList<A> des objets que j'instantie B, C
J'ai une méthode commune run() que j'ai besoin de mettre dans A, et mon problème c'est que j'ai besoin d'utiliser 2 variable d'instance appartenant a B et C, du coup je ne sais pas comment faire, quelqu'un peut m'aider ?
Alors je sais que ma demande est pas logique conceptuellement, mais je voulais éviter la redondance d'une methode qui va faire une 50ene de ligne, tout ça à cause d'un caractère et d'un entier...
j'ai cherché un peu, j'ai trouvé une methode :
mais je sais pas si ça fonctionne car le modèle est fait ainsi :
Mais peut-être avez vous une autre solution ?
peut etre qu'il y a une methode moins borderline
merci pour votre aide !
Je vous explique mon probléme :
j'ai une classe mere abstract A
et des classes fille B et C
mon modèle stock dans une ArrayList<A> des objets que j'instantie B, C
J'ai une méthode commune run() que j'ai besoin de mettre dans A, et mon problème c'est que j'ai besoin d'utiliser 2 variable d'instance appartenant a B et C, du coup je ne sais pas comment faire, quelqu'un peut m'aider ?
Alors je sais que ma demande est pas logique conceptuellement, mais je voulais éviter la redondance d'une methode qui va faire une 50ene de ligne, tout ça à cause d'un caractère et d'un entier...
j'ai cherché un peu, j'ai trouvé une methode :
A fille = modele.getA(var1, var2); if (fille.equals(B.class)) ceQueJeVeutFaire(((B) fille).getMaVar()); else if (fille.equals(C.class)) ceQueJeVeutFaire(((C) fille).getMaVar());
mais je sais pas si ça fonctionne car le modèle est fait ainsi :
ArrayList<A> liste = new ArrayListe<>(); liste.add(new B()); liste.add(new C());
Mais peut-être avez vous une autre solution ?
peut etre qu'il y a une methode moins borderline
merci pour votre aide !
2 réponses
-
Du coup, je me dis que que je devrais mettre les 2 variables dans la class mère mais le problème que sa valeur dépent de la classe fille auquelle elle appartient (class mère est abstraite donc non instantiable)
pour info je suis en 1ere année de dut info donc peut etre que c'est la conception de mes classes qui n'est pas adapté, j'espère avoir donné assez de renseignements :) -
Bonjour,
Il faudrait que tu déclaresabstract A getMaVar();
dans ta classe mère.A a = modele.getA(var1, var2); ceQueJeVeutFaire(a.getMaVar());
-
-
Remarque :
fille.equals(B.class)
ne peut pas fonctionner, car à gauche on a un type qui extends A (par exemple B ou C), mais à droite on a type Class<B> donc ça colle pas.
Pour que l'égalité soit correcte on pourrait fairefille.getClass().equals(B.class)
oufille instanceof B
(et il y a encore d'autres manières pour faire)
-