Héritage

Résolu
mamamiya92 Messages postés 14 Date d'inscription mardi 13 janvier 2009 Statut Membre Dernière intervention 4 janvier 2019 - 27 avril 2009 à 15:20
mamamiya92 Messages postés 14 Date d'inscription mardi 13 janvier 2009 Statut Membre Dernière intervention 4 janvier 2019 - 28 avril 2009 à 15:20
Bonjour,

Je n'ai peut-être pas bien cherché dans le forum, mais j'ai une question assez simple pour les connaisseurs moins pour moi:
Je m'explique:
J'ai un "projet dll". Dans ma dll j'ai une classeA avec ses méthodes. On vient de me demander d'ajouter d'autres fonctionnalités, j'ai donc ajouté une classeB.
Ces deux classes ne font pas forcément la même chose, mais certaines méthodes de la classeA peuvent être utilisées dans la classeB.

J'aimerais savoir s'il est possible de créer une classe mère des classeA et classeB, que j'appelerai classeAB (par exemple) et qui gèrera les méthodes communes aux deux sous-classes?
Cela me permettra de n'implémenter dans classeA ou classeB que leur méthode spécifique.

Comment le faire en pratique...? svp :)

Bien cordialement,

Prière de pardonner aux débutants...

5 réponses

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
27 avril 2009 à 15:51
Salut

Ton problème me paraît simple, c'est pourquoi je ne suis pas sûr de bien l'avoir compris.

Pour faire hériter A et B d'une classe mère AB, il suffit de faire

class A : AB
{
//...
}
et
class B : AB
{
//...
}

Tous tes membres / propriétés / méthodes de la class M qui ne sont pas privés (donc public, internal (s'il s'agit du même assembly (= Projet grosso-modo)) ou protected) seront accessibles dans tes classes A et B

Donc si tu fais
class AB
{
    protected int monInt = 5;
    public int MonIntAuCarre()
    {
        return monInt * monInt;
    }
}

class A : AB
{
    public int MonInt
    {
        set { monInt = value; }
    }
}

tu pourras faire
A a = new A();
a.MonInt = 10;
a.MonIntAuCarre(); // 100

!! Attention : en C#, une classe ne peut hériter que d'1 autre classe. !!

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
27 avril 2009 à 21:37
Voire aussi du côté des classes abstraites (abstract) et le mot clé virtual (et ce qui va avec )
En gros, toute la notion objet quoi...

<hr />
-Blog-
-Site Perso-
3
mamamiya92 Messages postés 14 Date d'inscription mardi 13 janvier 2009 Statut Membre Dernière intervention 4 janvier 2019
28 avril 2009 à 14:53
Merci pour ces réponses.
Effectivement, il m'arrive d'avoir la tête en l'air même si je suis dans la notion d'objet que depuis 3 mois...en parallèle à d'autres choses

Merci.

PS: Une petite remarque...Je ne sais pas si je dois ouvrir une nouvelle question pour cela.
Est-il possible d'avoir une enum d'enum?

public enum ENUM1
{
a = 1,
b=2
}


public enum ENUM2

{
 
c = 3,
 
d =4

}

Comment avoir une ENUM de sorte que je puisse faire: "ENUM.ENUM1.a"...

Prière de pardonner aux débutants...
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
28 avril 2009 à 15:02
Non, ce n'est pas possible. Tu seras obligé de passer par des classes / structures.
Un enum est juste un int qu'on a joliment remplacé par du texte pour se simplifier la vie.

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
0

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

Posez votre question
mamamiya92 Messages postés 14 Date d'inscription mardi 13 janvier 2009 Statut Membre Dernière intervention 4 janvier 2019
28 avril 2009 à 15:20
Merci,

Effectivement, j'ai créé une classe de mes deux enum. Le souci que j'ai c'est que j'ai une méthode définie dans une interface que je voudrais voir commune.
Je m'explique:
J'ai une méthode

        void MaMethode(ENUM1 monEnum)
        {
            etc...
        }
Je ne voudrais pas dans chacune des 2 classes qui implémente ma méthode MaMethode()

        void MaMethode(ENUM2 monEnum)
        {
            etc...
        }
Je ne vois pas pour l'instant comment je pourrais faire:

        void MaMethode(ENUM monEnum)
        {
            etc...
        }

ENUM prendra en compte ENUM1 et ENUM2...

Je suis peut-être un boulet, mais bon, je pense que vous pourrez m'aider
Merci.

Prière de pardonner aux débutants...
0
Rejoignez-nous