– POLYMORPHISME des méthodes :
o une même méthode (et ses paramètres) peut apparaitre dans différentes classes
o ce sont différentes formes d’une même méthode
o la méthode se comporte différement selon l’objet sur lequel elle est appelée
o le nom et les types et ordre des paramètres doivent être identiques
o le type retourné peut être différent !
– Résolution d’appel de méthodes
Forme f ;
…
f = new Cercle ();
f.afficher ();
o Possibilités
– Résolution statique : par le compilateur : la methode afficher de la classe Forme est appelée
– Dynamique : par l’interpréteur : la méthode afficher de la classe Cercle est appelée
o En java : …………………………………………………….
– C’est la version la plus spécifique de la méthode qui est appelée (la plus basse dans la hiérarchie en commençant à partir de la classe de l’objet)
Ajout d’une méthode agrandir() dans la classe Cercle
– Main () : appel de agrandir sur le cercle, sur la forme : …………….
super
– Permet d’accéder explicitement (par exemple en cas d’ambiguitéà) à des attributs ou des méthodes de la classe mère
– Exemple : appel de la méthode afficher de Forme dans la méthode afficher de Cercle
Constructeur d’une classe héritée
– Exemple : class B extends A …
– Chaque sous-classe peut définir son constructeur
– Si le constructeur de B n’appelle pas le constructeur de A cela est fait automatiquement (appel du constructeur sans paramètre de la classe A)
– Appel d’un constructeur de la classe mère avec paramètres :
class A {
A (int i, int j) {…}
…}
class B {
B () {
super (xx, yy)
Protection des données héritées
Class A {
private x
protected y
…
Class B extends A
– Est-ce que B peut accéder à l’attribut x : ……………….
– Est-ce que B peut accéder à l’attribut y : ……………….
– Est-ce qu’une classe C n’héritant pas de A peut accéder à x : ……………….
– Est-ce qu’une classe C n’héritant pas de A peut accéder à y : ……………….
– Est-ce que ces accès peuvent être en lecture / modification : ……………
Méthodologie pour définir la hiérarchie des classes
– Déterminer les attributs et comportements communs à plusieurs classes
– Définir une classe représentant ces attributs et comportements communs
– Décider si une sous-classe a besoin de comportements spécifiques (redéfinition ou ajout de méthodes)
– ATTENTION : ne pas confondre “est-un” et “a-un”
Méthodologie pour définir la hiérarchie des classes (512 KO) (Cours PDF)