[JAVA] Nested classes
Résolu/Fermé
Salut,
j'aimerais avoir une petite explication sur un point des nested classes, après avoir cherché un peu sur le net je suis tombé sur un cour qui disait ceci à propos de la visibilité des membres :
or d'apres ce que j'ai compris la classe englobante ne devrait avoir accès qu'aux membres static de la classe interne non ? Et après avoir testé mon compilateur semble être du même avis que moi.
J'aimerais donc savoir si c'est une erreur de l'auteur ou si c'est moi qui ai mal compris le principe ?
Merci d'avance :)
j'aimerais avoir une petite explication sur un point des nested classes, après avoir cherché un peu sur le net je suis tombé sur un cour qui disait ceci à propos de la visibilité des membres :
Visibilité pour les classes internes static : - La classe englobante a accès à tous les membres de la classes internes, qu'ils soient static ou non, et même s'ils sont private
or d'apres ce que j'ai compris la classe englobante ne devrait avoir accès qu'aux membres static de la classe interne non ? Et après avoir testé mon compilateur semble être du même avis que moi.
J'aimerais donc savoir si c'est une erreur de l'auteur ou si c'est moi qui ai mal compris le principe ?
Merci d'avance :)
A voir également:
- [JAVA] Nested classes
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java décompiler - Télécharger - Langages
3 réponses
poukkid
Messages postés
106
Date d'inscription
mercredi 20 mai 2009
Statut
Membre
Dernière intervention
11 avril 2012
11
30 août 2011 à 10:58
30 août 2011 à 10:58
Salut,
C'est plutot l'inverse, les classes internes sont en général utilisées pour pouvoir avoir accès à tous les attributs de la classe englobante, même s'ils sont privates.
Vas voir la dessus cette notion est bien expliquée :
https://java.developpez.com/faq/java?page=Concepts-du-langage#NOTION_classe_interne_types
C'est plutot l'inverse, les classes internes sont en général utilisées pour pouvoir avoir accès à tous les attributs de la classe englobante, même s'ils sont privates.
Vas voir la dessus cette notion est bien expliquée :
https://java.developpez.com/faq/java?page=Concepts-du-langage#NOTION_classe_interne_types
Merci pour ta réponse.
Pour le moment c'est encore un peu brouillon dans mon esprit, j'ai déjà vu quelques exemple d'utilisation des classes internes mais j'ai encore un peu de mal à imaginer tous les cas ou elles peuvent être utiles.
Donc pour en revenir a ma question de base, je ne devrais jamais rencontrer de situation on ma classe englobante devrait avoir accès a un membre de la classe interne ?
Pour le moment c'est encore un peu brouillon dans mon esprit, j'ai déjà vu quelques exemple d'utilisation des classes internes mais j'ai encore un peu de mal à imaginer tous les cas ou elles peuvent être utiles.
Donc pour en revenir a ma question de base, je ne devrais jamais rencontrer de situation on ma classe englobante devrait avoir accès a un membre de la classe interne ?
KX
Messages postés
16760
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
30 août 2011 à 21:39
30 août 2011 à 21:39
Si, tu peux accéder aux membres de la classe interne, mais uniquement au travers d'un objet de cette classe. Voici un exemple de ce qu'on peut faire ou non :
Les classes que j'ai pu croiser de ce type sont des implémentations d'interface, par exemple pour implémenter Iterator dans les Collection, ou les ActionListener en Swing.
public class A { private int x; class B { private int y; void f() { x=1; // possible y=2; // possible } } void g() { x=3; // possible y=4; // impossible B b = new B(); b.x=5; // impossible b.y=6; // possible } }
Les classes que j'ai pu croiser de ce type sont des implémentations d'interface, par exemple pour implémenter Iterator dans les Collection, ou les ActionListener en Swing.