Instancier la classe CompteA
Instancier la classe CompteA
class EssaiCompteA {
public static void main(String[] arg) {
CompteA monCompte;
monCompte = new CompteA();
monCompte.montant = 10;
monCompte.modifier(150);
System.out.println("Montant du compte " + monCompte.montant);
}
}
On va décortiquer la suite des instructions.
Après la déclaration :
CompteA monCompte;
il y a une place en mémoire pour la variable monCompte, mais cette variable est en fait destinée à contenir l'adresse d'un objet de type CompteA, il n'y a pas encore de compte créé. La case mémoire pour la variable monCompte est représentée ci-dessous.
Après CompteA monCompte;
Dans une affectation, le second membre est calculé avant l'affectation.
Donc, new CompteA(); s'exécute : c'est là qu'il y a ce qu'on appelle l'instanciation de la classe CompteA, autrement dit la création d'un objet de type CompteA.
Une place est faite en mémoire pour les attributs de l'objet créé, ici l'attribut montant. Au départ, la valeur de l'attribut montant vaut 0 (les attributs entiers sont par défaut toujours initialisés à 0). Le mot new indique qu'on crée un objet et on fait appel, derrière ce mot, par CompteA(), au constructeur de la classe CompteA (ce qui construit un objet sur le modèle de la classe CompteA).Il y a donc maintenant en mémoire ce qui est représenté ci-dessous, où l'objet créé est représenté en rouge :
Après new CompteA();
Le constructeur renvoie en fait l'adresse de l'objet créé. L'affectation monCompte = ... s'exécute. L'adresse de l'objet créé est mise dans la variable monCompte : on a maintenant le schéma ci-dessous, où la flèche symbolise le fait que dans la variable monCompte, il y a l'adresse de l'objet de type CompteA créé :
Après monCompte = new CompteA(); .
monCompte.montant est l'attribut montant de l'objet dont l'adresse est dans monCompte. Par abus de langage, l'objet d'adresse monCompte est appelé simplement monCompte. L'instruction :
monCompte.montant = 10;
signifie qu'il faut attribuer la valeur 10 à l'attribut montant de monCompte.
Ce qui est maintenant en mémoire est représenté ci-dessous :
Après monCompte.montant = 10;
Pour utiliser la méthode modifier de monCompte, on procède comme on le voit dans l'instruction :
monCompte.modifier(150);
On exécute la méthode modifier écrite dans la classe CompteA, et cette méthode est appliqué à monCompte. On a maintenant la situation représentée ci-desous :
Après monCompte.modifier(150);
On obtient à l'exécution, avec notre programme :
Montant du compte 160
Le fichier EssaiCompteA.java
© Charon Irène Télécom ParisTech 2010