Sur la notion d'héritage

Signaler
Messages postés
25
Date d'inscription
dimanche 16 mars 2008
Statut
Membre
Dernière intervention
4 septembre 2008
-
Messages postés
25
Date d'inscription
dimanche 16 mars 2008
Statut
Membre
Dernière intervention
4 septembre 2008
-
salut à tous. j'aimerais avoir une clarification sur deux notions d'héritage, je voudrais savoir si une classe peut hériter d'une autre son constructeur, si oui comme le faire.

8 réponses

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
Salut, une classe dérivée appelle toujours le constructeur de sa classe de base, implicitement ou pas :

class Base
{


 Base(  )
 {
 }


 Base( int x )
 {
 }
}


class Derive : Base
{
 Derive( ) // implicite
 {
 }


 Derive( int x, iny y ) : base( x ) // explicite
 {
 }
}
Messages postés
25
Date d'inscription
dimanche 16 mars 2008
Statut
Membre
Dernière intervention
4 septembre 2008

merci pour ta réponse, c'est ce que je me disais aussi. mais si dans la classe dérivée j'ai de nouveaux objets à initialiser, je dois créer un nouveau constructeur pour cette classe. j'aimerais savoir comment je dois m'y prendre.
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
dsl je comprends pas ta question.
Messages postés
25
Date d'inscription
dimanche 16 mars 2008
Statut
Membre
Dernière intervention
4 septembre 2008

par exemple, j'ai une classe Eleve qui hérite d'une classe personne. ma classe Eleve possède un champ en plus de ceux de la classe Personne, le champ Niveau. en utilisant le constructeur de la classe Personne, le champ Niveau ne sera pas initialisé. alors je suppose que je dois définir un constructeur pour la classe Eleve qui en plus initialiser les champs hérités, initialise les champs de la classe qui hérite, ici Eleve. ainsi, ma question est de savoir comment je dois m'y prendre.
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
C'est tout simple..

class Personne
{
    private string nom;


    public Personne( string nom ) : base( )
    {
        this.nom = nom;
    }
}


class Eleve : Personne
{
    private int niveau;


    public Eleve( string nom, int niveau ) : base( nom )
    {
        this.niveau = niveau;
    }
}
Messages postés
25
Date d'inscription
dimanche 16 mars 2008
Statut
Membre
Dernière intervention
4 septembre 2008

j'ai trouvé la solution avant que tu répondes à ma question mais merci quant même. et j'ai une autre question, j'ai lu dans un doc quelque chose à propos des interfaces mais j'ai pas vraiment compris alors si quelqu'un pouvait éclairer ma lanterne...
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
Salut, une interface c'est quasi comme une classe abstraite, c-à-d une classe avec la déclaration des méthodes mais pas le corps.. tel quel elles ne servent à rien, il faut les implementer ( en deriver ). L'intêret ( en gros ) c'est de pourvoir dire au developpeur, si tu implementes telle interface je saurais que je peux appeler telle méthode sur ta classe, à toi de faire ce que tu veux dans cette méthode.
Messages postés
25
Date d'inscription
dimanche 16 mars 2008
Statut
Membre
Dernière intervention
4 septembre 2008

merci pour ta réponse, c'est plus que clair maintenant. j'ai plein d'autres questions mais je suis un peu pas le temps aujourd'hui. alors bon week-end.