Héritage [Résolu]

Signaler
Messages postés
14
Date d'inscription
mardi 13 janvier 2009
Statut
Membre
Dernière intervention
4 janvier 2019
-
Messages postés
14
Date d'inscription
mardi 13 janvier 2009
Statut
Membre
Dernière intervention
4 janvier 2019
-
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

Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
44
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 ! -
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
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-
Messages postés
14
Date d'inscription
mardi 13 janvier 2009
Statut
Membre
Dernière intervention
4 janvier 2019

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...
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
44
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 ! -
Messages postés
14
Date d'inscription
mardi 13 janvier 2009
Statut
Membre
Dernière intervention
4 janvier 2019

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...