IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

[Reflexion] Constructeur dans classe mère


Sujet :

API standards et tierces Java

  1. #1
    Membre averti
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2005
    Messages : 12
    Par défaut [Reflexion] Constructeur dans classe mère
    Bonjour tout le monde,

    Je n'arrive pas à trouver la solution de ce problème... qui commence à m'embéter sérieusement.
    J'ai 2 classes :
    ClasseFille qui étends ClasseMere
    ClasseMere à un constructeur public avec pour signature (Namespace, Document)
    ClasseFille n'à pas de constructeur.

    En réflexion je veux créer ma classeFille donc si je fais comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Class classe = Class.forName("ClasseFille");
    Constructor constructor = classe.getSuperclass().getDeclaredConstructor(new Class[] { 
                                               Class.forName("org.jdom.Namespace"), 
                                               Class.forName("org.jdom.Document")
                                               });
    Object maClasse = constructor.newInstance(new Object[]{"monNameSpace", "maTransaction"});
    Et là : maClasse est une ClasseMere non castable en ClasseFille !

    En revanche, si je supprime le getSuperclass() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Class classe = Class.forName("ClasseFille");
    Constructor constructor = classe.getDeclaredConstructor(new Class[] { 
                                               Class.forName("org.jdom.Namespace"), 
                                               Class.forName("org.jdom.Document")
                                               });
    Object maClasse = constructor.newInstance(new Object[]{"monNameSpace", "maTransaction"});
    Je me chope une exception car le constructeur n'est pas trouvé dans la ClasseFille...

    Y a t'il une solution autre que de redéclarer les contructeur dans la ClasseFille ?

    Merci d'avance et bonne journée

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par ledruide Voir le message
    ClasseFille n'à pas de constructeur.
    C'est tout simplement impossible : une classe possède toujours au moins un constructeur. S'il n'est pas mis explicitement il sera ajouté implicitement par le compilateur.


    Ensuite ce que tu veux faire est impossible : un constructeur est lié à un type en particulier et ne n'hérite pas. Donc un constructeur de ClasseMere te donnera un objet de type ClassMere quoi qu'il arrive...


    Bref tu dois rajouter le même constructeur dans la classe fille, qui appelerait le constructeur de la classe parente :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class ClassFille extends ClassMere {
     
        public ClassFille(Namespace namespace, Document document) {
              super(namespace, document);
        }
     
    }

    a++

  3. #3
    Membre averti
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2005
    Messages : 12
    Par défaut
    Merci pour cette réponse claire et concise...

    Donc je vais continuer la surcharge des constructeurs dans les classes filles alors

    Merci encore

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ledruide Voir le message
    Donc je vais continuer la surcharge des constructeurs dans les classes filles alors
    Ce n'est pas de la surcharge mais simplement une définition de constructeur !


    a++

  5. #5
    Membre averti
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2005
    Messages : 12
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Ce n'est pas de la surcharge mais simplement une définition de constructeur !
    Oups au temps pour moi c'est tout à fait exact

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/07/2010, 15h17
  2. Réponses: 10
    Dernier message: 23/06/2007, 16h13
  3. Réponses: 8
    Dernier message: 17/04/2007, 11h35
  4. [c#] Plusieurs constructeurs dans une classe
    Par Seth77 dans le forum C#
    Réponses: 3
    Dernier message: 04/09/2006, 12h28
  5. Réponses: 2
    Dernier message: 04/12/2005, 21h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo