Partage
  • Partager sur Facebook
  • Partager sur Twitter

accès fonction classe fille

    18 août 2009 à 17:23:23

    Bonjour

    J'ai un gros problème :( , je vous explique je travaille à partir de classes déjà créées et compilées, je voudrais modifier une fonction dans une de mes classes. Là pas de problème je créer une classe fille qui étend ma classe mère et je modifie ma fonction. Mais c'est la que ça devient compliquer, je ne peux pas instancier ma classe fille (la classe mère est présente à beaucoup trop d'endroits), pourtant je voudrais que le programme utilise la fonction modifiée dans la classe fille à la place de celle de la classe mère. Y a t-il un moyen de forcer le programme à utiliser la fonction dans ma classe fille ???

    merci de votre aide :)
    • Partager sur Facebook
    • Partager sur Twitter
      18 août 2009 à 17:40:27

      Je ne vois pas d'autre solution que faire un massif rechercher-remplacer dans l'ensemble des fichiers de ton projet...
      Et si les fichiers sont déjà compilés et que tu n'as pas accès au code source, je crois que c'est complètement impossible...
      • Partager sur Facebook
      • Partager sur Twitter
        18 août 2009 à 17:41:17

        Tu ne veux pas ou tu ne peux pas ?

        Enfin, dans tous les cas, instancier un objet dans le seul but d'utiliser une fonction c'est une erreur.

        tu devrais:
        - rendre ta méthode static si elle ne change pas les propriétés de ta classe.
        - mettre cette méthode dans ta classe principale avec un nom différent.
        Est ce vraiment utile de la faire hériter ?

        Sinon non: tu peux forcer une classe fille a appeler une méthode d'une classe mère, mais pas l'inverse
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          18 août 2009 à 17:42:45

          change l'implementation de la classe mere et vire la fille.
          • Partager sur Facebook
          • Partager sur Twitter
            18 août 2009 à 17:52:27

            Yop, j'ai une solution:
            regarde du côté de java.lang.reflect.Method en particulier la méthode "invoke" de la classe Method.

            Tu pourras appeler ta méthode d'un peu n'importe où grâce à la reflexion, seul pb: elle risque de faire n'importe quoi. Invok ( x, y) va créer une instance de ton objet fille pour appeler la méthode que tu veux et donc dans le même temps créer ton objet parent. Seul problème ses objets seront tous neufs et ils n'auront pas les propriétés de tes objets actuels.

            il faut donc que tu utilise un constructeur de copie, pour copier ton objet actuel et qu'il l'utilise pour Ta méthode dans la méthode invok.

            Bon courage, c'est un peu tordu, c'est pas fait pour ça non plus, mais bon.. pourquoi pas.

            • Partager sur Facebook
            • Partager sur Twitter
              19 août 2009 à 8:44:49

              merci de vos réponses. :)

              Je ne peux pas faire de massif rechercher-remplacer, il y a trop d'implications derrière. Je ne peux pas non plus mettre cette méthode dans la classe mère car elle utilise trop de fonctions d'autres classes qui ne sont pas visibles. En fait je ne peux pas toucher à la classe mère c'est une classe déjà compilée et je n'ai pas le code source.

              Je vais donc regarder d'un peu plus près la solution d'Alanis.

              encore merci de votre aide :)
              • Partager sur Facebook
              • Partager sur Twitter

              accès fonction classe fille

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown