// Pseudo correction de la construction de la hierarchie // Vehicule - Voiture // |_ Camion // La classe Vehicule est obtenue est factorisant les points communs entre les classes d'origine Voiture et Camion // Tous les elements ne sont pas presents. // Ce fichier liste les fichiers Vehicule.java, Voiture.java, Camion.java et Main.java // Dans l'interface de la classe Main, se trouve la methode main() ;-) // -------------------------------------------------------------------------------------------------------------------- // classe mere de la hierarchie Voiture, Camion // construite en factorisant les points communs entre les classes Voiture et Camion public class Vehicule { private String immatriculation; public Vehicule(String immat) { immatriculation = immat; // ou setImmatriculation(immat); } public void afficher() { // Choisir un des deux affichages //System.out.println("Je suis un vehicule : "+getImmatriculation()); System.out.println("Je suis "+getClass().getName()+" : "+getImmatriculation()); // introspection : triche } public final String getImmatriculation() { return immatriculation; } public final void setImmatriculation(String immatriculation) { this.immatriculation = immatriculation; } } // ------------------------------------------------------------------------------------------------------- fin Vehicule // Version de la classe Voiture qui est maintenant un Vehicule public class Voiture extends Vehicule{ protected int places; // pas d'héritage de constructeur public Voiture(String immat) { super(immat); // appel du constructeur de la classe mere, c'est forcement la premiere instruction places = 4; } // si on met cette méthode en commentaire, l'appel d'afficher est celui de la classe mere public void afficher() { super.afficher(); // appel explicite de la methode de la classe mere, position pas importante System.out.println("Nb places : "+places); // affichage d'informations specifiques } } // -------------------------------------------------------------------------------------------------------- fin Voiture // Si vous ajoutez en l'etat la classe Camion, cela va provoquer une erreur de compilation // Eclipse suggere la correction ... public class Camion extends Vehicule{ // classe vide : message d'erreur qui dit que le constructeur de la classe // mere (Vehicule) n'est pas defini } // --------------------------------------------------------------------------------------------------------- fin Camion // On utilise pour le programme une classe accessoire, cela permet de ne pas favoriser telle ou telle classe de la // hierarchie public class Main { public static void main(String[] args) { Vehicule ve = new Vehicule("000 AA 00"); ve.afficher(); Voiture v = new Voiture("300 ISI 63"); v.afficher(); } } // ----------------------------------------------------------------------------------------------------------- fin Main