Attributs static et héritage

tshupaka Messages postés 9 Date d'inscription dimanche 5 janvier 2003 Statut Membre Dernière intervention 13 juillet 2005 - 12 juil. 2005 à 14:30
cs_ducheseb Messages postés 344 Date d'inscription mardi 18 mai 2004 Statut Membre Dernière intervention 23 juin 2006 - 13 juil. 2005 à 18:58
Bonjour,



En gros, j'ai une classe abstraite :



public abstract class ServiceClient {



protected static final String CONFIG_FILE="";

protected static final String RULES_FILE="";



public void init(){

.... CONFIG_FILE...

... RULES_FILE...

}

}



Cette classe n'est jamais instancié, pour ça j'ai une autre classe :



public class ConsultationClient extend ServiceClient {

protected static final String CONFIG_FILE="config.xml";


protected static final String RULES_FILE="digester.xml";

}



donc si j'instancie la classe ConsultationClient et que j'invoque la
méthode init, j'aimerais que la valeur de CONFIG_FILE et RULES_FILE
soit respectivement "config.xml" et "digester.xml".

Mais voila, le pb c que les valeurs sont "" et "" (il ne prend pas les
valeurs de la sous classe, mais le valeur de la classe mère)



Quelqu'un sait pourquoi ??



Merci



Eric

5 réponses

cs_ducheseb Messages postés 344 Date d'inscription mardi 18 mai 2004 Statut Membre Dernière intervention 23 juin 2006 7
12 juil. 2005 à 15:19
Dans ta classe fille, tu définies des champs propre à ta classe, si tu veux utiliser les champs de la classe mère, tu peux écrire:
ServiceClient.CONFIG_FILE ="config.xml";
0
tshupaka Messages postés 9 Date d'inscription dimanche 5 janvier 2003 Statut Membre Dernière intervention 13 juillet 2005
12 juil. 2005 à 15:29
oui, mais justement, si CONFIG_FILE est définie en static, je peux pas
le modifier dynamiquement (sans le surcharger). Je n'ai aucune méthode
dans la classe fille, juste la redéfinition des deux attributs
statique. les methodes sont définies dans la classe mère mais doivent
utiliser les valeurs des constantes de la classe fille. C'est un peu
complexe, mais ça simplifie drolement mon code de faire comme ça !
0
cs_ducheseb Messages postés 344 Date d'inscription mardi 18 mai 2004 Statut Membre Dernière intervention 23 juin 2006 7
12 juil. 2005 à 18:38
Et si tu utilises ConsultationClient.CONFIG_FILE pour les lire...
0
tshupaka Messages postés 9 Date d'inscription dimanche 5 janvier 2003 Statut Membre Dernière intervention 13 juillet 2005
13 juil. 2005 à 08:45
Effectivement, mais justement, le principe est qu'il y a plusieur
classe fille (ConsultationClient, UserManagementClient,...) et donc la
valeur changera en fonction de la classe.



Par exemple si ConsultationClient est instancié, CONFIG_FILE aura pour
valeur "consultationClientConfig.xml" et sera utilisé dans la méthode
init de la classe mère ServiceClient.

Si UserManagementClient est instancié, CONFIG_FILE aura pour valeur
"userManagementClientConfing.xml" et sera utilisé dans la méthode init
de la classe mère ServiceClient.



J'ai beau chercher, je comprend pas pourquoi il utilise la valeur de
ServiceClient au lieu de celle de ConsultationClient alors que le type
dynamique de l'objet et ConsultationClient...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ducheseb Messages postés 344 Date d'inscription mardi 18 mai 2004 Statut Membre Dernière intervention 23 juin 2006 7
13 juil. 2005 à 18:58
Comment instancie tu tes classes?
0