Voici un exemple d'une 'regular inner class' (classe interne régulière):

- la classe interne 'Inner' peut accéder aux éléments de la classe externe (même les 'private')
- la classe interne ne peut avoir d'élément 'static'.
- la classe interne peut accéder à l'instance de la classe externe: 'NomDeLaClasseExterne.this' (dans l'exemple: Outer.this.a)
- pour créer une instance de la classe Inner à partir d'une autre classe externe ('A' dans l'exemple) ou d'une méthode static de la classe externe ('Outer' dans l'exemple), vous devez avoir une référence sur la class externe ('Outer' dans l'exemple): "Outer.Inner inner = new Outer().new Inner();".
Tandis qu'une 'static inner class' (classe interne statique):

- peut avoir des membres statiques
- ne peut pas accéder aux membres 'instance' de la class externe
- pour créer une instance de la classe, on n'a plus besoin d'une référence de la classe externe; on peut directement faire ceci: "Outer.Inner inner = new Outer.Inner();".
No comments:
Post a Comment