Nous allons voir maintenant une classe, la classe CercleGraphique, qui simultanément étend la classe Cercle et implémente l'interface Tracable. On dit aussi que la classe CercleGraphique est une sous-classe de la classe Cercle ou bien qu'elle hérite de la classe Cercle.
Puisque la classe CercleGraphique étend la classe Cercle , elle dispose de tous les attributs et de toutes les méthodes non privées (non private) de la classe Cercle. Mais elle ne dispose pas directement de la variable rayon de la classe Cercle puisque celle-ci est private ; il faut utiliser la méthode getRayon de la classe Cercle pour retrouver la valeur de rayon.
Le constructeur de la classe CercleGraphique invoque en première ligne le constructeur de sa superclasse avec le paramètre rayon. S'il ne le faisait pas, l'instruction :
super();
serait insérée en première instruction au moment de la compilation ; mais, à ce même moment, il serait découvert que la classe Cercle n'a pas de constructeur sans paramètre : erreur de compilation.
Puisque la classe CercleGraphique implémente l'interface Tracable, elle doit définir la méthode dessine annoncée dans Tracable, et cela nécessairement avec l'indication public. C'est ce qui est fait ici.
Notez qu'une classe hérite au plus d'une superclasse (en fait, toujours d'une superclasse, sauf en ce qui concerne la classe java.lang.Object qui n'a pas de superclasse) mais qu'elle peut implémenter plusieurs interfaces.
public class CercleGraphique extends Cercle implements Tracable {
private int x,y;
private java.awt.Color couleur;
public CercleGraphique(int rayon, int x, int y,java.awt.Color couleur) {
super(rayon);
this.x=x;
this.y=y;
this.couleur=couleur;
}
public void dessine(java.awt.Graphics g) {
if (getRayon() < DIM_MAX) {
g.setColor(couleur);
g.drawOval(x-getRayon(),y-getRayon(),2*getRayon(),2*getRayon());
}
}
}
Pour accéder à Cerclegraphique;java.
public void dessine(java.awt.Graphics g) : lorsqu'une classe implémente une interface, elle doit définir toutes les méthodes dont les prototypes sont annoncés dans l'interface, et leur attribuer le modificateur de visibilité public.
DIM_MAX : la constante DIM_MAX définie dans Tracable est connue dans CercleGraphique qui implémente Tracable.
©Irène Charon Télécom ParisTech 2010