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 :

Appel propriété classe parente


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 49
    Par défaut Appel propriété classe parente
    Bonjour,

    Une question toute bête ...
    J'étends une classe.
    Je souhaite dans ma classe héritée appeler une propriété de ma classe parente.
    Comment fait on ?

    Exemple :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Classe A {
    private monattribut
    public MonAttribut {get {du code ...} set {du code ...} }
    }
     
    Classe B : Classe A {
    public MonAttribut {
     // ici je veux appeler MonAttribut de la classe A
    }

    Merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 269
    Par défaut
    Bonjour

    avec le mot clé base.

    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
    16
    class A {
    private monattribut;
    public virtual MonAttribut {get {du code ...} set {du code ...} }
    }
     
    class B : class A {
    public override MonAttribut {
     get {return base.MonAttribut ;} //ici  base.MonAttribut  fait reference a celui de la classe A
     set { base.MonAttribut = value;}
    }
     
    class C : class B {
    public override MonAttribut {
     get {return base.MonAttribut ;} //ici base.MonAttribut  fait reference a celui de la classe B
     set { base.MonAttribut = value;}
    }
    Comme tu peux le voir avec la "classe C", base permet d'appeler l'element de la classe la plus proche (en terme de parenté)

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    Pour info (prenons l'exemple de ta classe A), la ligne suivante est incorrecte.
    il faut un type pour la variable 'monattribut'.
    Si 'monattribut' une chaine de caractère :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    private string monattribut;
    C'est la même chose pour la propriété 'MonAttribut'.


    Si dans ta classe B, tu veux appeler ta propriété, tu peux utiliser le mot clé base.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public Classe B : Classe A {
      // Méthode de la classe B qui appelle une propriete de la classe A
      public void MethodeClasseB {
        // ici je veux appeler MonAttribut de la classe A
        string s = base.MonAttribut;
      }
    }
    En espérant avoir cerné ce que tu voulais

  4. #4
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 49
    Par défaut
    Oui j'ai oublié d'indiquer le type
    Donc il faut utiliser virtual et override pour pouvoir utiliser la propriété dans une classe héritée ... ok. Merci de l'info

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Citation Envoyé par lolo5935
    Donc il faut utiliser virtual et override pour pouvoir utiliser la propriété dans une classe héritée ... ok. Merci de l'info
    Non non, il faut utiliser le mot clé base.

    Je te redirige vers une doc sur les mots clés de C# :
    http://jlambert.developpez.com/tutor...otsclescsharp/
    Tu y trouveras les mots clés 'override' et 'virtual' également.
    Chaque mot clé a un lien msdn associé

  6. #6
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 49
    Par défaut
    Oui j'ai bien compris pour base (équivalent de super en java ^^)
    Je veux simplement dire que ta propriété doit être déclaré "virtual" dans ta classe parente et déclarée override dans ta classe héritée

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

Discussions similaires

  1. Appel de méthode de la classe parente
    Par atalon1 dans le forum PyQt
    Réponses: 4
    Dernier message: 23/02/2009, 19h20
  2. Réponses: 1
    Dernier message: 02/05/2008, 20h34
  3. [POO] Faire appel au constructeur de la classe parent
    Par sliderman dans le forum Langage
    Réponses: 2
    Dernier message: 03/03/2008, 14h30
  4. [WPF] appeler une méthode de la classe "parente"
    Par Invité dans le forum Framework .NET
    Réponses: 3
    Dernier message: 19/10/2007, 09h44
  5. [POO] Appeler une méthode redéfinie de la classe parente
    Par Djakisback dans le forum Langage
    Réponses: 5
    Dernier message: 04/08/2006, 22h56

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