Les Interfaces

Liens pour comprendre mieux les interfaces et les packages: The Java Tutorial Lesson: Interfaces and Packages (en Anglais)

Une interface est une collection des definitions des methodes (sans implantations). Une interface peut aussi declarer les constants.

Les differences entre une interface et une classe abstraite:

  • Une interface ne peut pas implanter aucun methodes, mais une classe abstraite peut les implanter.
  • Une classe peut avoir pleuseurs interfaces mais peut avoir seulement une "superclasse".
  • Une interface n'est pas un part d'un arbre d'heritage.
Les interfaces peuvent déclarer des variables mais ells ne sont pas instanciables.

Une class peut implanter une ou plusieurs interface(s) (mot clé implements suivi d'une liste de noms d'interfaces séparés par une virgule)

Créer et utiliser un interface

interface X {
   final double PI = 3.14;
   public int a();
   public void b();
}



class Y implements X {
   private int xa=0;

   //interface X
   public int a() {
       return xa;
   }

   public void b() {
       xa++;
   }
}
Exemple: ActionListener Javadoc pour ActionListener

Class qui utilise ActionListener (ShapesApplet.java)

Exemple: ALifeWorld

interface ALifeWorld {
    public int getWidth();
    public int getHeight();
}


interface FlockALifeWorld extends ALifeWorld {
    ALifePoint getNearestNeighbor(int id);
    double getCentroidX();
    double getCentroidY();
    double getWgtCentroid();
    double getWgtParallel();
    double getWgtDistance();
}


abstract class ALifeSim extends JPanel implements ALifeWorld {
    ...
    //interface ALifeWorld
    //getWidth et getHeight() sont dans JPanel
}


class FlockALifeSim extends ALifeSim implements FlockALifeWorld, ChangeListener {
    void setup(int numPts) {
	pts=new ALifePoint[numPts];
	for (int i=0; i < numPts; i++) {
	    pts[i] = new FlockALifePoint(this,i);
	}
       ...
    }
    ...

    //FlockALifeWorld interface
    public double getCentroidX() { return centX; }
    public double getCentroidY() { return centY; }
    public double getWgtCentroid() { return (double)sWgtCentroid.getValue()/100.0;}
    public double getWgtParallel() { return (double)sWgtParallel.getValue()/100.0;}
    public double getWgtDistance() { return (double)sWgtDistance.getValue()/100.0;}

}




class FlockALifePoint extends ALifePoint{
    ...
    FlockALifeWorld w;
    FlockALifePoint(FlockALifeWorld w, int id) {
	...
	this.w=w;
        ...
    }    
     
    public void computeDir() {
	...
	ALifePoint nearest = w.getNearestNeighbor(getId());
        ...

    }
}
Retour à la page principale d'ift1020
Last modified: Sun Oct 3 10:12:47 EDT 2004 par Douglas Eck [douglas D0T eck AT umontreal D0T ca]