Académique Documents
Professionnel Documents
Culture Documents
Java
CTD 2
Anne-Gwenn Bosser
Plan du cours aujourd’hui – Objec4fs
pédagogiques
Anne-Gwenn Bosser
Appel des paramètres de méthode
Anne-Gwenn Bosser
Appel des paramètres de méthode
#2: Les types des paramètres sont toujours soit des primi:ves, soit des
références (jamais des objets).
En fait p est une référence, on ne manipule pas directement les objets en Java
Anne-Gwenn Bosser
More info: http://www.yoda.arachsys.com/java/passing.html
Résolution des appels de méthodes
Anne-Gwenn Bosser
Résolu'on des appels de méthodes
Polymorphisme objet:
“Même signature, fourni un comportement différent”
≈ Redéfini'on de méthode (Overriding )
Polymorphisme paramétrique:
“Différente signature, fourni le même type de
comportement”
≈ Surcharge de méthode (Overloading)
Anne-Gwenn Bosser
Résolu'on des appels de méthodes
class MyClass {
public void myMethod(){
System.out.Print(“Parent class MySubClass extends MyClass{
version”); public void myMethod(){
} System.out.Print(“Child version”);
} }
}
Anne-Gwenn Bosser
Résolu'on des appels de méthodes
⚠Les opérateurs ne peuvent pas être surchargés en Java. Les opéra+ons sur
le type String sont définies par le langage.
Anne-Gwenn Bosser
Résolu'on des appels de méthodes
class Dot{}
class Line{}
Anne-Gwenn Bosser
Quelle est la sor+e?
Anne-Gwenn Bosser
Résolution des appels de méthodes
Pourquoi ?
Pour la surcharge, l’appel est résolu à l’aide du type sta8que durant la compila8on :
ici: le type des éléments du tableau est Parent
le compilateur résout l’appel par Test ( Parent p )
Pour la redéfini8on, l’appel est résolu à l’aide du type dynamique durant l’exécu8on
(Late binding)
Si l’objet a été créé (lors du new) avec un sous-type de Parent
Alors la méthode appelée est celle définie dans la classe sous-type, donc celle de Child.
Anne-Gwenn Bosser
Masquage des méthodes statiques
Ces méthodes sont donc masquées dans les sous classe, et doivent être appellées
explicitement (nom de la classe, ou type cast).
Anne-Gwenn Bosser
Masquage des méthodes sta/ques
Anne-Gwenn Bosser
Constructeurs, Appels des constructeurs
Si (et seulement si) aucun constructeur n’est défini explicitement dans une
classe, la compila8on génèrera un constructeur par défaut sans paramètres.
Un constructeur peut appeler explicitement un autre constructeur
Cet appel doit être la première instruc8on du constructeur
On peut u8liser les mots clés this et super
Exemple: super() appelle le constructeur de la superclasse sans paramètres
En cas d’appel mutuel, l’erreur sera detectée à la compila8on
Si aucun appel explicite n’est fait, implicitement le constructeur de la classe
Object sera appelé
Anne-Gwenn Bosser
Exercices - Devine-es
Anne-Gwenn Bosser
Plus sur les classes et interfaces
Anne-Gwenn Bosser
Les classes Java
Anne-Gwenn Bosser
Classes Internes
Anne-Gwenn Bosser
Classes Internes
Anne-Gwenn Bosser
Classe Imbriquée anonyme
button.addActionListener(new ActionListener(){
System.out.println(actionEvent.getActionCommand()) ;
}
}
);
Anne-Gwenn Bosser
Classe abstraite
Types Generiques
public class Pair<T>{
public T first;
public T second;
}
Methodes Génériques
Anne-Gwenn Bosser
Héritage simple
Interfaces mul3ples
Anne-Gwenn Bosser
Héritage simple
La classe Object :
Toutes les classes appar/ennent à une hiérarchie.
La racine est la classe Object.
Voir la documenta/on des APIs Java:
h>ps://docs.oracle.com/javase/7/docs/api/
Une classe peut
Implémenter plusieurs interfaces
N’étendre qu’une seule classe ( Pas d’héritage mul8ple)
Anne-Gwenn Bosser
Interfaces
Anne-Gwenn Bosser
Interfaces
Exemple
Anne-Gwenn Bosser
Le “problème” de l’héritage en diamant
Vehicule
Sous-marin Voiture
Batmobile
Anne-Gwenn Bosser
Le “problème” de l’héritage en diamant
Anne-Gwenn Bosser
Le “problème” de l’héritage en diamant
Une solu6on possible, parmi d’autres: considérer non pas la Batmobile comme
à la fois une Voiture et un Sous-Marin, mais alterna6vement Voiture ou Sous-
Marin, selon son état.
On définit des classes Voiture et Sous-Marin qui implémentent une interface Véhicule
C’est le code de la classe Batmobile (implémentant elle même Véhicule) qui décrit
quand on doit appeller quelle méthode, par exemple avec un aLribut qui conserve son
état courant (objet Vehicule de type Voiture ou Sous-Marin), et comment gérer les
aLributs.
On peut même ranger tous les Vehicule dans un même tableau et appeller en boucle
leurs méthodes seDeplace
Anne-Gwenn Bosser
Le “problème” de l’héritage en diamant
<<Vehicule>>
Sous-marin Voiture
Batmobile
Anne-Gwenn Bosser
Exercice
Hulk
Anne-Gwenn Bosser