/** Auteur: Mohamed Lokbani cet exemple présente l'utilisation des champs statiques. à chaque fois que nous créons un compte, on aimerait incrémenter une variable qui permet de garder une trace du nombre de comptes créés. puisque cette variable devra être partagée par tous les objets elle sera donc unique. Donc elle devra être ratachée à la classe et non pas les objets. Pour ce faire nous avons besoin de la déclarer statiques. Ainsi elle sera visible de tous les objets créés. */ class compte{ // Définition des champs String nom; double actif; int limite; // limite de crédit // varable statique initialisée à 0 static int nbcomptes=0; // Définition des méthodes public compte(String monnom,double monactif,int malimite){ nom = monnom ; actif = monactif ; limite = malimite ; // à chaque fois qu'un compte est créé, on incrémente // nbcomptes. nbcomptes++; } public compte copie(){ compte X = new compte(nom,actif,limite); return X; } double depot(double argent){ actif += argent; return actif; } void affiche() { System.out.println("nom de la personne: " + nom); System.out.println("actif de son compte: " + actif); System.out.println("limite de crédit: " + limite); } } public class chpstatic { public static void main(String [] args){ // nbcompte peut être appelée directement, pas besoin // donc d'avoir un objet pour pouvoir le faire. System.out.println("nbcomptes: " + compte.nbcomptes); compte a = new compte("toto",99,5000); // on peut quand même y accéder via l'objet a System.out.println("nbcomptes: " + a.nbcomptes); compte b = new compte("tutu",55,2000); // ... ou l'objet b System.out.println("nbcomptes: " + b.nbcomptes); // mais il est conseillé d'y accéder en utilisant // le nom de la classe, car la variable est plus ratachée // à la classe qu'à un objet en particulier. System.out.println("nbcomptes: " + compte.nbcomptes); a.depot(50); a.affiche(); } }