Sur la notion d'héritage

maltutoma Messages postés 25 Date d'inscription dimanche 16 mars 2008 Statut Membre Dernière intervention 4 septembre 2008 - 9 avril 2008 à 03:17
maltutoma Messages postés 25 Date d'inscription dimanche 16 mars 2008 Statut Membre Dernière intervention 4 septembre 2008 - 12 avril 2008 à 10:35
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

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
9 avril 2008 à 06:57
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
 {
 }
}
0
maltutoma Messages postés 25 Date d'inscription dimanche 16 mars 2008 Statut Membre Dernière intervention 4 septembre 2008
10 avril 2008 à 09:02
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.
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
10 avril 2008 à 14:48
dsl je comprends pas ta question.
0
maltutoma Messages postés 25 Date d'inscription dimanche 16 mars 2008 Statut Membre Dernière intervention 4 septembre 2008
10 avril 2008 à 21:42
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
11 avril 2008 à 10:04
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;
    }
}
0
maltutoma Messages postés 25 Date d'inscription dimanche 16 mars 2008 Statut Membre Dernière intervention 4 septembre 2008
11 avril 2008 à 22:35
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...
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
12 avril 2008 à 06:55
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.
0
maltutoma Messages postés 25 Date d'inscription dimanche 16 mars 2008 Statut Membre Dernière intervention 4 septembre 2008
12 avril 2008 à 10:35
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.
0
Rejoignez-nous