//Exemple de classes dérivées en Java // Derivation.java propriété des classes dérivées // Définissons la classe 'Figure' qui mémorise un point particulier // (extrémité, centre, sommet...); une figure doit être dessinée. // Toute classe qui dérive de 'Figure' devra construire une // figure avec deux entiers, et devra définir la méthode 'dessiner' // On construit ensuite trois classes qui dérivent de 'Figure'. abstract class Figure { int x,y; Figure(int a, int b) { x=a; y=b; } abstract void dessiner(); } class Ligne extends Figure { Ligne() { super(0,0); } void dessiner () { System.out.print("ligne "); } } class Ovale extends Figure { int rayon; Ovale(int r) { super(0,0); rayon=1;} void dessiner () { System.out.print("ovale "); } } class Rectangle extends Figure { int largeur,hauteur; Rectangle(int a, int b, int larg, int h) { super(a,b); largeur=larg; hauteur=h; } void dessiner () { System.out.print("rectangle "); } } public class Derivation { /** Creates a new instance of Derivation */ public Derivation() { } public static void main(String[] args) { Object desF[]= new Object[3]; // N'importe quel objet dérivant de 'Figure' peut être affecté // à un tableau de 'Figure'. desF[0]=new Ligne(); desF[1]=new Ovale(3); desF[2]=new Rectangle(1,2,3,4); // On réalise ci-dessous que la MVJ apelle la méthode dessiner // de la classe propre à la figure (Ligne, Rectangle ou Ovale) // alors que rien ne mentionne la sous-classe dans l'instructon // ci-dessous for(int i=0; i<desF.length; i++) ((Figure) desF[i]).dessiner(); System.out.println(""); } } //fin Derivation.java