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.

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);
         }
    }
Passez de joyeuses fêtes.
Bien à vous.