Hello,
Est-il possible, au sein d'un classe imbriquée, d'invoquer une variable membre de la classe qui contient la définition de la classe imbriquée ?
Ou faut-il nécessairement passer ce membre en paramètre ?
Hello,
Est-il possible, au sein d'un classe imbriquée, d'invoquer une variable membre de la classe qui contient la définition de la classe imbriquée ?
Ou faut-il nécessairement passer ce membre en paramètre ?
La classe parente A, contient une référence vers un objet de type B.
Estce que B peut accéder à un membre de A ?
Si c'est la question (et donc que j'ai bien compris), non tu peux pas, il te faut passer l'info en paramètre.
Par contre prudence, ça sent très fort le problème de conception.
nah666 a raison,
Si ta classe imbriquée doit être vue par l'extérieur,
C'est qu'elle ne doit pas être imbriquée
Par contre, tu peux jouer avec une interface
(qu'implémente ta classe imbriquée)
Non, la classe imbriquée est privée, et n'est donc vue que par la classe englobante.
En revanche, cette classe imbriquée a besoin de se référer à un membre de la classe englobante.
Au risque de dire une bêtise, je crois que la classe imbriquée n'est pas nécessairement private mais doit juste avoir un niveau de visibilité inférieure à celui de la classe englobante.
Comme dit précédemment, est ce que cette classe a vraiment besoin d'être imbriquée ?
Elle ne concerne et ne sera utilisée que par la classe englobante.
Elle n'a pas à être vue de l'extérieur.
Le mieux c'est de tester...Donc oui, une nested class a accès aux membres privés des instances de la classe qui la contient.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public class X { private int i; private class Y { public void F(X x) { x.i = 5; // oooh, ça marche ! :) } } }
Mais par contre, on est bien d'accord : une classe imbriquée, c'est une définition de classe, mais pas une instance. Ci dessus, dans mon exemple bidon, les instances de X n'ont pas d'instance de Y.
Franchement, je doute que t'en aies besoin. Ca a un périmètre d'utilisation assez limité.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager