Académique Documents
Professionnel Documents
Culture Documents
Généralisation/spécialisation
et héritage
Vehicule
numImmatr
poids
producteur
annee
VehiculeAttele VehiculeAmoteur
nombreRoue numMoteur
attelage typeCarburant
setAnnee(an);
}
// Méthodes d’altération
public void setImmatriculation(String nIm)
{numImmatr = nIm;}
public void setPoids(double pd)
{poids = pd;}
public void setProducteur(String prod)
{producteur = prod;}
public void setAnnee(int an)
{annee = an;}
// Méthodes d’accès
public String getImmatriculation()
{return numImmatr;}
public double getPoids()
{return poids;}
public String getProducteur()
{return producteur;}
public int getAnnee()
{return annee;}
}
Remarque :
Si le constructeur de la classe de base n’est pas explicitement appelé par la classe dérivée,
c’est le constructeur à défaut de la classe de base qui est appelé. L’appel du constructeur de la
classe de base devrait être la première instruction du constructeur de la classe dérivée. Cette
instruction doit utiliser le mot-clé super comme un nom de méthode, avec des arguments
passés entre parenthèses à la classe de base.
+ unVehiculeAmoteur.getImmatriculation() + "\n"
+ "POIDS: " + "\t"
+ unVehiculeAmoteur.getPoids() + " KG" + "\n"
+ "PRODUCTEUR: " + "\t"
+ unVehiculeAmoteur.getProducteur() + "\n"
+ "ANNEE DE PRODUCTION: " + "\t"
+ unVehiculeAmoteur.getAnnee() + "\n"
+ "NUMERO DU MOTEUR: " + "\t"
+ unVehiculeAmoteur.getNumMoteur() + "\n"
+ "TYPE DE CARBURANT: " + "\t"
+ unVehiculeAmoteur.getTypeCarburant() +"\n") ;
}
}
Remarque :
La méthode toString(), telle qu’elle est utilisée ici, permet de retourner le nom de la classe de
l’instance.
Pour déclarer une classe abstraite, on utilise le mot-clé abstract dans son en-tête.
Pour rendre la classe Vehicule abstraite, son en-tête devrait donc se présenter comme suit :
Remarque :
- Toute tentative d’instancier une classe abstraite, entraîne l’exception de nom
InstanciationError.
- Il faut plutôt dériver la classe abstraite et ensuite instancier la classe dérivée.
- L’avantage d’avoir une classe abstraite comme la classe Vehicule est que d’autres
classes peuvent dériver d’elle, alors on n’aura pas besoin de réécrire les instructions
communes à toutes les classes dérivées.
Plusieurs classes standard de Java sont finales et ne peuvent pas être dérivées. C’est le cas des
classes enveloppes (Integer, Byte, Double, …). La classe String est aussi finale.
Remarque :
Les méthodes aussi peuvent être déclarées finales. Dans ce cas, elles ne pourront pas être
« redéfinies » par des classes dérivées.
Si les champs de la classe de base sont déclarés comme « protected », alors la redéfinition de
la méthode getInfo() pourrait se présenter comme suit:
On peut bien évidemment déclarer les champs comme « public » pour permettre à n’importe
quel objet d’y accéder. Mais il faut éviter cette technique car cela viole le principe
d’encapsulation. Vous pouvez néanmoins déclarer les constantes comme public.
Il existe des situations, où une méthode déterminée doit exister dans toutes les classes
dérivées d’une classe de base. Dans ce cas, ce sont les classes dérivées qui sont chargées,
selon le cas, d’implémenter la méthode. Cela est donc nécessaire au polymorphisme.
Une technique pour imposer à toutes les classes dérivées d’inclure ou d’implémenter une
méthode est de la déclarer abstraite dans la classe de base.
- Une méthode abstraite est une méthode qui n’a pas de corps (il n’y que la déclaration).
- Une méthode est déclarée abstraite avec le mot-clé abstract. On parle généralement de
méthode différée ou retardée.
- Une méthode abstraite est donc une méthode qui est faite pour être implémentée dans une
classe dérivée ;
- Une classe qui contient une méthode abstraite devient elle-même automatiquement abstraite.
Bail
montant
dateDebut
dateFin
calculFrais()
BailAnnuel BailJournalier
estMensuel nombreJours
resteApayer
calculFrais() calculFrais()
Exemple :
public interface IntCompagnie
{
//Constantes dont les classes dérivées pourraient avoir besoin
public static final String NOM_COMPAGNIE = "JAVA CORP.";
public static final String ADRESSE_COMPAGNIE = "03 BP 1073, Cotonou";
public static final String PHONE_COMPAGNIE = "(229) 21 30 75 10";
// Méthode abstraite à redéfinir dans les classes dérivées
public abstract String getInfo();
//N'oubliez pas le point virgule à la fin de la déclaration
}
public class A
{…. }
public interface C
{….}
public interface D
{…. }
public interface E
{…. }