L'héritage
Exemple:
On peut
considérer qu'un cercle consiste en
la
donnée d'un point (le centre) et d'un rayon. Donc un cercle est
un point, plus certaines propriétés
supplémentaires.
Nous allons donc construire une classe Cercle qui hérite de
la
classe
Point (dénoté par une flèche de Cercle
vers Point).
mettre protected
devant x et y dans la
classe point
: lisible seulement par les classes qui héritent de Point.
#include <cmath>
class Cercle : public Point {
// l'héritage est public, ce qui signifie que les droits d'accés de Point sont conservés.
protected :
float
rayon;
public :
Cercle() : Point() { rayon=1; }
Cercle( float x, float y, float r) : Point(x,y) { rayon=r; }
Cercle( Cercle &c) : Point(c.x,c.y) { rayon=c.rayon;}
~Cercle() {}
float
surface( ) { float pi=4*atan(1); return
pi*rayon*rayon;
}
} ;
Il faut noter
que les méthodes de Point sont
directement
héritées; par exemple, sans avoir rien
programmé
au
niveau de la classe Cercle, on peut faire:
Cercle c;
c.translate(1.0,2.0);
et
ça marche, puisque ça translate le
centre
du cercle sans toucher au rayon.
Naturellement,
on pourrait si cela s'avérait
nécessaire
redéfinir dans Cercle des méthodes de Point.