Java
En vrac, Classes internes, Threads, entrées/sorties, Réseau
1
Java – Last cours
En vrac, Classes internes, Threads, entrées/sorties, Réseau
2
Définition
!
Une classe interne est une classe définie à l'intérieur d'une autre classe (depuis JDK 1.1) 2 propriétés importantes :
!
!
une classe interne peut être définie :
!
!
comme membre d'une classe (au même titre que ses attributs ou ses méthodes) ou bien à l'intérieur d'un bloc local (à l'intérieur d'une méthode)
!
la visibilité d'une classe interne est similaire à celle qu'aurait une méthode ou un attribut de la classe
3
Exemple
!
Une classe déclarée comme attribut : public class Avion { public class Pilote { public Pilote(String nom){…} public int methode1(){…} // méthode de la classe Pilote } public Avion(){…} public int methode2(){…} // méthode de la classe Avion }
!
Les modificateurs public, protected, private ou static sont valides
4
Exemple
!
Une classe locale : public class Avion { class Pilote{ Pilote(String nom){…} } public Pilote creePilote(){ return new Pilote("Mermoz"); } } Une classe locale n'est utilisable que dans le code qui l'a définie Les modificateurs public, protected, private ou static sont interdits
! !
5
Classes internes : pourquoi faire ?
!
!
Une classe interne a un accès complet sur tous les attributs de ses classes englobantes, y compris à ses attributs private Les classes internes sont très pratiques pour les programmes devant gérer les évènements d'une interface graphique (avec possibilité de créer des classes internes anonymes) Attention : elles peuvent réduire la lisibilité des sources
!
6
Les Classes internes - Exemple
!
Exemple : Une classe déclarée dans une autre classe
public class FixedStack { Object array[]; int top = 0; public void push(Object item) { ... } public Object pop() { ...} public isEmpty() { ...} public java.util.Enumeration element() {