Héritage de classes : surcharge de fonctions membres
Principe
Dans l'exemple précédent, rappelé ci-dessous, nous avons défini de nouvelles fonctions swonc()
et swoffc()
qui elles-mêmes appellent les fonctions swon()
et swoff()
de la classe mère. Il est cependant possible de réutiliser les mêmes noms de fonctions dans la classe fille que ceux de la classe mère : c'est le principe de surcharge
Exemple :
Nous avions défini deux fonctions swonc()
et swoffc()
dans la classe fille, chacune appelant une fonction de la classe mère.
class Cligno : public Led {
private:
int delayCligno;
public:
Cligno(int,int);
void swonc();
void swoffc();
};
Cligno::Cligno(int port,int delayC) : Led(port){
delayCligno = delayC;
}
void Cligno::swonc(){
swon();
delay(delayCligno);
}
void Cligno::swoffc(){
swoff();
delay(delayCligno);
}
Méthode :
Pour faire appel explicitement à une fonction de la classe mère, il suffit de préfixer le nom de la fonction avec le nom de la classe mère.
Exemple :
Nous utilisons maintenant, dans la classe fille, des fonctions de même nom que dans la classe mère :
class Cligno : public Led {
private:
int delayCligno;
public:
Cligno(int,int);
void swon();
void swoff();
};
Cligno::Cligno(int port,int delayC) : Led(port){
// delayCligno = 1000;
delayCligno = delayC;
}
void Cligno::swon(){
Led::swon();
delay(delayCligno);
}
void Cligno::swoff(){
Led::swoff();
delay(delayCligno);
}
Pour faire appel, dans la classe fille, aux fonctions de la classe mère, nous utilisons par exemple la syntaxe Led::swon();
où Led
est le nom de la classe mère et swon()
la fonction qu'on souhaite utiliser.