Vous remarquez depuis le début du livre que la fonction principale main() est en fait une méthode particulière d’une 
classe pourtant très classique. La fonction main() est statique, elle peut être appelée hors de la classe directement, 
c’est d’ailleurs le but. Le nom de la classe est celui du fichier résultant sans l’extension java ou class. 
Si vous allez dans le répertoire (dossier) où vous avez généré le bytecode java, les .class, vous devez remarquer que 
lorsque Java rencontre plusieurs définitions de classes dans un code source, il génère autant de fichiers .class qu’il 
existe de classes décrites. Le fichier porte le nom de la classe. Il sera dynamiquement chargé lors du lancement du 
programme. Si vous supprimez le fichier Ecran.class, plus rien ne marche. 
3. Héritage 
Java autorise l’héritage simple mais pas l’héritage multiple. Vous verrez cependant qu’il est possible de ruser un petit 
peu  avec  les  interfaces.  L’exemple  des  figures  géométriques  peut  s’appliquer  ici,  car  Java  supporte  très  bien  le 
polymorphisme et les classes et méthodes abstraites. 
L’héritage est exactement comme en algorithmique, sauf qu’à la place de "hérite de" vous utilisez le mot­clé "extends". 
Concernant les classes et méthodes abstraites vous rajoutez devant le nom le mot­clé "abstract". 
Notez que dans la définition de la classe abstraite quelques attributs privés sont remplacés par des attributs protégés. 
Autrement, les classes dérivées n’auraient pas eu le droit d’y accéder. 
Enfin  notez  aussi  l’utilisation  du  mot­clé  "super"  comme  en  algorithmique,  qui  remplace  la  classe  (ou  plutôt  l’objet) 
héritée, utilisée ici pour appeler le constructeur de la classe figure chargé de placer les bonnes couleurs. 
  Utilisée dans un constructeur, super doit être la première instruction appelée. 
abstract class figure {
protected double x,y,surface,perimetre;
protected String c_contour,c_remp;
public final double PI=3.1415927;
// Constructeur de figure
figure(String c1, String c2) {
setcolor_c(c1);
setcolor_r(c2);
}
public void setcolor_c(String couleur) {
this.c_contour=couleur;
}
public void setcolor_r(String couleur) {
this.c_remp=couleur;
}
// Méthodes abstraites
abstract public double getSurface();
abstract public double getPerimetre();
}
class disque extends figure {
private double rayon=0;
// Constructeur
disque(double c_x, double c_y, double r) {
// appel du constructeur de figure
super("noir","blanc");
this.x=c_x;
this.y=c_y;
this.rayon=r;
}
// Implémentation des méthodes abstraites
public double getSurface() {
return this.PI*this.rayon*this.rayon;
}
public double getPerimetre() {
return 2*this.PI*this.rayon;
- 3 -
© ENI Editions - All rigths reserved - Jonifar lina
218
Précédent

- 218/220

Suivant