Bonjour,
Je voudrai réaliser la fonctionnalité suivante (version simplifiée) :
soit la classe abstraite C, et deux classes concrètes héritées CInt(contenant un parametre int entier) et CFloat (contenant un parametre float flottant).
la classe abstraite C contient deux méthodes abstraites :
je voudrai pouvoir surcharger ces méthode dans CInt de façon à avoir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 abstract void setValue(Object o); abstract Object getValue();
soit :
soit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 void setValue(Object o) { entier = (int) o; // ici Eclipse refuse le cast }
et pour l'autre méthode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 void setValue(int o) { entier = o; // ici Eclipse se plaint que je ne définisse pas la méthode setValue(Object o) ... logique }
Et bien sûr, de façon similaire pour CFloat, et qu'il soit possible de rajouter de nouvelles classes héritées de la même façon sans devoir modifier la classe mère.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 int getValue() { // Ici le type de retour est incompatible avec la méthode abstraite return entier; } Object getValue() { return entier; // Ici c'est ok mais dans le code appelant je ne pourrai pas caster en int }
J'imagine que c'est courant, ou que c'est un design pattern connu mais je n'arrive pas à le trouver. Je prends surement le problème par le mauvais bout, et çà commence à m'énerver alors je m'en remets à la facilité de la communauté internet ><
Merci
Partager