Précision sur la portée des variables en Java
Bonjour à tous,
Tout d'abord, veuillez m'excuser, je me doute que ma question a déjà une réponse que je pourrais trouver via Google, mais ne connaissant pas les termes précis qui concernent ma question, c'est assez compliqué de faire une recherche. Et lorsque je consulte des articles parlant de la portée des variables, je ne trouve pas la précision recherchée.
Je vais donc tenter de m'exprimer correctement à ce sujet. Un bout de code devrait m'aider à me faire comprendre:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
public class Test
{
protected boolean myBoolean = true;
Test()
{
Foo mFoo = new Foo() {
@Override
public void action()
{
myBoolean = false;
}
};
}
} |
Voilà, ma question est maintenant toute simple: est-ce que j'ai le droit de faire ça ? Ai-je le droit d'accéder aux variables de ma classe Test depuis la méthode redéfinie de Foo ?
Si oui, est-ce que le fait que la variable soit public, protected ou private y change quelque chose ? Est-ce une bonne façon de faire ou est-ce à éviter ?
Mes tests me montrent que ça compile en tout cas, mais je trouve cela assez bizarre puisque la méthode "action" est une méthode de la classe Foo et qu'elle accède directement à la variable de Test...
Merci d'avance pour votre réponse :)