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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
abstract void setValue(Object o);
abstract Object getValue();
je voudrai pouvoir surcharger ces méthode dans CInt de façon à avoir :

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
}
soit:
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 pour l'autre méthode :
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
}
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.

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