next up previous contents index
suivant: Un membre privé n'est monter: Extension et héritage précédent: Extension d'une interface   Table des matières   Index

Un exemple

Supposons que nous décidions d'attribuer de façon interne à toute forme géométrique un nom, qui est une chaîne de caractères. On peut étendre l'interface Forme définie plus haut, en une interface FormeNommée, par l'addition d'une méthode de lecture (comme les interfaces ne permettent pas de déclarer de champ, c'est une méthode d'accès qui doit être déclarée) :

package geometrie;

interface FormeNommée extends Forme {
  String getNom();
}

Définissons maintenant les classes PointNommé, CercleNommé et RectangleNommé afin qu'ils réalisent FormeNommée au lieu de Forme. Le plus simple est d'en faire des extensions des classes Point, etc. Les types concrets PointNommé, CercleNommé, etc., doivent donc définir la méthode getNom. Il faut par conséquent ajouter un paramètre de type String au constructeur, et invoquer le constructeur de la classe parente, au moyen de super(x, y) :

package geometrie;

class PointNommé extends Point implements FormeNommée { 
  private String nom;
  PointNommé(double x, double y, String nom) {
    super(x, y);
    this.nom = nom;
  }
  public String getNom() {
    return nom;
  }
}

La classe PointNommé est un sous-type de Point, qu'elle étend, et de FormeNommée, qu'elle réalise.



Rene' LALEMENT 2002-11-07