none
C# - tableaux et héritage RRS feed

  • Question

  • Bonsoir,
    Je voudrais savoir si il est possible de créer un tableau du type de ma classe parent (ClassParent) et d'y stocker des classes héritant de se type: au moins de 2 classes différents (ClassFils1 et ClasseFils2 par exemple )
    dimanche 4 décembre 2016 21:26

Réponses

  • Bonjour,

    Oui c'est possible, voici un exemple très simple :

    class Toto
        {
            public virtual void Presentation()
            {
                Console.WriteLine("Je suis un toto");
            }
        }
    
        class Titi : Toto
        {
            public override void Presentation()
            {
                Console.WriteLine("Je suis un titi");
            }
        }
    
        class Tata : Toto
        {
            public override void Presentation()
            {
                Console.WriteLine("Je suis un tata");
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                Toto[] totoArray = new Toto[3];
    
                totoArray[0] = new Titi();
                totoArray[1] = new Tata();
                totoArray[2] = new Titi();
    
                foreach (var item in totoArray)
                {
                    item.Presentation();
                }
            }
        }

    Cordialement

    lundi 5 décembre 2016 09:46
  • bonjour,
    la solution precedente est toujours bonne. sauf si tu voudrais acceder à une variable d'un de tes fils.
    la tu devrais juste caster ou renvoyer la variable au parent.
    bonne chance !! 
    lundi 5 décembre 2016 20:16

Toutes les réponses

  • Bonjour,

    Oui c'est possible, voici un exemple très simple :

    class Toto
        {
            public virtual void Presentation()
            {
                Console.WriteLine("Je suis un toto");
            }
        }
    
        class Titi : Toto
        {
            public override void Presentation()
            {
                Console.WriteLine("Je suis un titi");
            }
        }
    
        class Tata : Toto
        {
            public override void Presentation()
            {
                Console.WriteLine("Je suis un tata");
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                Toto[] totoArray = new Toto[3];
    
                totoArray[0] = new Titi();
                totoArray[1] = new Tata();
                totoArray[2] = new Titi();
    
                foreach (var item in totoArray)
                {
                    item.Presentation();
                }
            }
        }

    Cordialement

    lundi 5 décembre 2016 09:46
  • Merci pour la réponse,
    Je me rends compte que mon problème était mal exposé, en effet mes classes ont de nouvelles variables qui leurs sont propres. 

    (L'idéale serait de pouvoir utiliser un tableau statique)

    Par exemple: 

    class Titi : Toto { int VarToto; } class Tata : Toto { float VarTata; bool OnTata; }

    lundi 5 décembre 2016 18:18
  • bonjour,
    la solution precedente est toujours bonne. sauf si tu voudrais acceder à une variable d'un de tes fils.
    la tu devrais juste caster ou renvoyer la variable au parent.
    bonne chance !! 
    lundi 5 décembre 2016 20:16