Méthodes d'instance en Java
Écrivez une classe Jar dans Jar.java avec un champ int nommé fill, un constructeur Jar(int n) qui fait fill = n;, et une méthode d'instance void bump() qui exécute fill = fill + 1;. Dans Desk.java, construisez un jar avec Jar j = new Jar(3);, appelez j.bump();, puis affichez j.fill. Compilez les deux fichiers et lancez java Desk. L'écran doit montrer une ligne : 4. La méthode s'exécute sur ce seul objet et change son champ. Appeler une méthode via la variable d'objet est ce que cette page enseigne.
Une méthode qui appartient à l'objet
Sur les pages de méthodes plus tôt vous appeliez un nom depuis main sans objet devant. Ici la méthode est sur la classe, mais vous l'atteignez via une variable jar : j.bump(). Cet appel utilise les champs du jar que j nomme. Un second jar garderait son propre fill.
Créez d'abord Jar.java. La ligne public class est public class Jar. Ne laissez pas un ancien nom de classe Tin ou Box ici. À l'intérieur des accolades déclarez int fill;. Écrivez le constructeur Jar(int n) { fill = n; } avec des noms différents pour que cette page n'ait pas besoin de this. Puis écrivez la méthode d'instance :
void bump() { fill = fill + 1; }
Il n'y a pas de main dans Jar.java. Enregistrez avant de compiler. L'en-tête de méthode a besoin de void parce que bump ne renvoie pas de valeur à afficher. Le constructeur n'a toujours pas de void — gardez cette différence claire.
public class Jar {
int fill;
Jar(int n) {
fill = n;
}
void bump() {
fill = fill + 1;
}
}
Desk construit un jar et appelle bump
Créez Desk.java dans le même dossier. Sa ligne public class est public class Desk. Dans main, écrivez trois lignes dans l'ordre : Jar j = new Jar(3);, puis j.bump();, puis System.out.println(j.fill);. Le constructeur stocke 3. L'appel j.bump() ajoute un. L'affichage montre la nouvelle valeur.
Gardez Desk comme la classe qui contient main. Ne mettez pas main dans Jar pour cette leçon. Si un fichier Lab restant de la page this est encore dans le dossier, ne lancez pas java Lab pour cette leçon — lancez java Desk après avoir compilé Jar.java et Desk.java.
public class Desk {
public static void main(String[] args) {
Jar j = new Jar(3);
j.bump();
System.out.println(j.fill);
}
}
Depuis le dossier qui contient les deux fichiers, lancez javac Jar.java Desk.java. Vous pouvez compiler Jar.java d'abord et Desk.java ensuite quand les deux sont complets. Quand parenthèses, accolades et points-virgules correspondent, javac n'écrit aucune ligne de son côté. Puis lancez java Desk — pas java Desk.java, et pas java Jar. Enlevez la fin .java de la commande de lancement. Démarrez la classe qui contient main. Les mêmes commandes fonctionnent sous Windows et macOS.
Le programme doit afficher une ligne et s'arrêter : 4. Il ne doit pas attendre que vous tapiez. Si le terminal attend le clavier, un appel nextLine d'un ancien exercice est encore dans un fichier. Supprimez-le et gardez new Jar(3), j.bump(), et l'affichage dans Desk, avec bump dans Jar.
Parcourez l'exécution une fois. Java démarre à Desk.main. L'expression new Jar(3) construit un jar et stocke 3 dans fill. L'appel j.bump() entre dans bump sur ce même objet. Le corps écrit fill = fill + 1, donc fill devient 4. Puis main affiche j.fill et l'écran montre 4.
Si vous écrivez bump(); sans j. devant, javac refuse dans cette forme de main. La méthode d'instance a besoin d'un objet. Si vous écrivez Jar.bump(); comme un appel static, c'est l'idée de la leçon suivante — pas de cette page. Gardez j.bump();.
Comparé avec this et avec l'affectation directe de champ
Sur la page this vous stockiez un champ dans le constructeur avec des noms identiques. Cela fonctionne encore. Cette page ajoute une méthode que vous pouvez appeler plus tard, après que l'objet existe déjà. Une démo restante Tin t = new Tin(7); avec this.size = size; est une autre leçon. Pour cette page gardez Jar et Desk et j.bump();.
Vous pourriez encore écrire j.fill = j.fill + 1; dans main. Cette leçon déplace ce changement dans bump pour que l'objet porte l'action. Afficher j seul avec System.out.println(j); ne montre pas un 4 propre. Affichez j.fill pour voir le nombre stocké.
Deux bump sur un jar
Vous pouvez appeler j.bump(); deux fois avant d'afficher. Commencez avec new Jar(3), bump une fois jusqu'à 4, bump encore jusqu'à 5, puis affichez. Ce contrôle tient dans une petite seconde démo Desk.
public class Desk {
public static void main(String[] args) {
Jar j = new Jar(3);
j.bump();
j.bump();
System.out.println(j.fill);
}
}
Compilez et lancez à nouveau : javac Jar.java Desk.java, puis java Desk. L'écran doit montrer 5. Chaque appel à bump s'est exécuté sur le même objet et a ajouté un de plus. Écrire Jar k = j; ne construit pas un second objet — utilisez deux appels new Jar(...) quand vous voulez deux fills séparés. Pour cette page, deux bump sur un jar suffisent pour voir la méthode s'exécuter deux fois.
Si l'écran montre encore 3, les appels bump peuvent manquer ou main peut encore afficher avant de les appeler. S'il montre 7 ou un autre nombre restant, une ancienne démo Tin peut encore être dans le fichier. Gardez new Jar(3) et les appels bump.
Ce que cela laisse pour static
Cette page appelle la méthode via un objet : j.bump(). Une page plus tard — static — montre des méthodes et des champs qui appartiennent au nom de la classe lui-même sans objet devant. Restez ici avec l'appel d'instance. N'inventez pas static void bump() sur cette page sauf si vous le connaissez déjà ; le but de la leçon est l'appel sur l'objet.
Si javac ne trouve pas Jar en compilant Desk.java, vérifiez que Jar.java est dans le même dossier et que la ligne de classe est public class Jar. Si l'écran montre 0, le constructeur peut manquer le stockage, ou bump ne s'exécute jamais — gardez Jar(int n) { fill = n; } et j.bump(); avant l'affichage.
Quand le dossier tient encore Tin.java ou Lab.java de la page this, laissez-les ou supprimez-les seulement s'ils embrouillent votre commande de compilation. Lancez java Desk après avoir compilé la paire Jar et Desk de cette leçon.
Avant static
Vous pouvez déclarer int fill;, écrire Jar(int n) { fill = n; } et void bump() { fill = fill + 1; }, et depuis Desk lancer Jar j = new Jar(3);, j.bump();, puis afficher j.fill. Compilez les deux fichiers et lancez java Desk. L'écran montre 4. La méthode d'instance s'est exécutée sur cet objet et a changé son champ. La page suivante est static, où certains membres appartiennent au nom de la classe sans avoir besoin d'une variable d'objet devant.
Gardez void sur la méthode, pas sur le constructeur. Gardez l'objet devant l'appel : j.bump();. Gardez l'affichage sur j.fill. Ces trois habitudes sont le point de contrôle de cette page avant d'avancer.
🧠 Testez Vos Connaissances
Testez Vos Connaissances
Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet
📝 Instructions
- Lisez chaque question attentivement
- Sélectionnez la meilleure réponse pour chaque question
- Vous pouvez refaire le quiz autant de fois que vous le souhaitez
- Votre progression sera affichée en haut