Bonjour je ne comprends pas du tout pourquoi le retour de la fonction de maiin donne 0 et 10.
J'aurai juré de mille feux qu'on obtienne une erreur de compilation. Etant donné qu'on a une variable protégée par private, un objet instancié, or cet objet devrait aller dans le tas, et par conséquent ne devrait pas pouvoir accéder à la variable déclarée avec le modificateur private.
J'ai refait le même chose -une fonction main, et instancié un objet AQuestion- mais en créant un objet à partir d'un autre package, effectivement on ne peut pas accéder à la vatriable. Mias ici étant donné qu'on déclare un objet dans la même classe, celui ci peut accéder à une vairable déclarée avec le modificateur private. C'est fou! Ca voudrait donc dire que je n'ai rien compris à l'encapsulation ? Donc au modèle objet ? C'est possible, si quelqu'un pouvait m'éclairer.
Passez de joyeuses fêtes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public class AQuestion { private int i = giveMeJ(); private int j = 10; private int giveMeJ() { return j; } public static void main(String args[]) { System.out.println((new AQuestion()).i); System.out.println((new AQuestion()).j); } }
Bien à vous.
Partager