next up previous contents
suivant: Expressions, Opérateurs, Tableaux monter: Extension de classes précédent: Classes et méthodes abstraites   Table des matières

Interface

Java n'admet pas l'héritage multiple. Une classe ne peut être l'extension que d'au plus une classe. Par contre, elle peut implémenter plusieurs d'interfaces.

Une interface n'a pas de variables d'instance et toutes ses méthodes sont nécessairement abstraites.



transparent
Interface


public interface Attribué{
       void add(Attr nAttr);
       Attr find(String attrNom);
       Attr remove(String attrNom);
       java.util.Enumeration attrs();
}
interface V{
  int SILENT = 0;
  // ...
}


Une interface peut être considérée comme une classe (abstraite) sans variables d'instances et ne contenant que des fonctions abstraites. Comme elles peuvent être implémenter par n'importe quelles classes, elles permettent de réaliser un héritage multiple (simplifié car sans données membres).



transparent
Interface


interface W {};
interface X extends W {};
class Y implements W {};
class Z extends Y implements X {};
interface W {};
interface X extends W {};
interface Y implements W {};
class Z implements X, Y {};




transparent
Interface...


import java.util.*;
class AttribuéImpl implements Attribué {
    protected Hashtable attrTable = new Hashtable();
    public void add(Attr nAttr){
        attrTable.put(nAttr.getNom(), nAttr);
    }
    public Attr find(String nom){
        return (Attr)attrTable.get(nom);
    }
    public Attr remove(String nom){
        return (Attr)attrTable.remove(nom);
    }
    public Enumeration attrs(){
        return attrTable.elements();
    }
}


transparent
Interface et extension


import java.util.Enumeration;
class AttribuéAstre extends Astre implements Attribué{
    AttribuéImpl attrImpl=new AttribuéImpl();
    AttribuéAstre(){super();}
    AttribuéAstre(String nom, Astre orbite){
        super(nom,orbite);
    }
    public void add(Attr nAttr){attrImpl.add(nAttr);}
    public Attr find(String nom){return attrImpl.find(nom);}
    public Attr remove(String nom){
        return attrImpl.remove(nom);
    }
    public Enumeration attrs(){
        return attrImpl.attrs();
    }
}




Hugues Fauconnier 2002-01-11