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

C# Discussion :

C’est quoi la différence


Sujet :

C#

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2006
    Messages : 23
    Points : 17
    Points
    17
    Par défaut C’est quoi la différence
    C’est quoi la déférence entre c’est 2 exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public class A
        {
            virtual public void test()
            {
                MessageBox.Show("Parent");
            }
        }
        public class B : A
        {
            override public void test()
            {
                MessageBox.Show("Fils");
            }
        }
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public class A
        {
            public void test()
            {
                MessageBox.Show("Parent");
            }
        }
        public class B : A
        {
            public void test()
            {
                MessageBox.Show("Fils");
            }
        }

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Commence par regarder les cours de ce site, notamment l'héritage et le polymorphisme, et tu devrais être capable de répondre à la question toi même.

    http://dotnet.developpez.com/cours/
    Pas de questions techniques par MP

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    la différence est la suivante : dans le premier cas la méthode test est virtuelle (ou polymorphe), c'est à dire que si tu l'utilises avec une référence de type A, c'est A.test ou B.test qui sera appelée en fonction du type réel de l'objet pointé par cette référence. Dans le second cas c'est toujours A.test qui sera appelée :

    Cas 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    A x = new A();
    x.test(); // Affiche "Parent"
    x = new B();
    x.test(); // Afficher "Fils" car test est virtuelle
    Cas 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    A x = new A();
    x.test(); // Affiche "Parent"
    x = new B();
    x.test(); // Afficher "Parent" aussi car test n'est pas virtuelle

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Points : 706
    Points
    706
    Par défaut
    Bonjour,

    Le 1er exemple induit un comportement "polymorphe" comme le dit tomlev via l'intermédiaire d'une méthode virtuelle. Le comportement de la méthode est défini explicitement.

    Le 2e exemple lui correspond à une situation de masquage. On le désigne aussi comme "désactivation du polymorphisme". Son comportement lui est implicite.

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 14/05/2018, 11h47
  2. Template ou cms C'est quoi la différence ?
    Par freshman dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 15/04/2011, 23h10
  3. Réponses: 2
    Dernier message: 01/12/2010, 10h47
  4. C'est quoi la différence entre Stateful et un MangerBean(@SessionScoped )
    Par ghost10 dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 24/11/2010, 03h41
  5. c'est quoi la différence entre
    Par deubelte dans le forum Visual C++
    Réponses: 1
    Dernier message: 12/06/2008, 11h07

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