Chargement...

Champs en Java

Placez un champ int nommé fill dans une classe Cup dans Cup.java. Dans Shelf.java, construisez un cup avec Cup c = new Cup();, stockez un nombre avec c.fill = 3;, puis affichez ce champ avec System.out.println(c.fill);. Compilez les deux fichiers et lancez java Shelf. L'écran doit montrer une ligne : 3. Le champ tient des données sur cet unique objet. Vous l'atteignez via la variable qui nomme l'objet. Stocker et lire cette valeur sur l'objet est ce que cette page enseigne.

Une place pour des données sur l'objet

Sur la page des objets, beep affichait seulement. Il ne gardait pas un nombre pour plus tard. Un champ est un nom déclaré dans la classe où chaque objet peut tenir sa propre valeur. Après que new a construit l'objet, vous assignez le champ via la variable d'objet, puis vous pouvez l'afficher.
Créez d'abord Cup.java. La ligne public class est public class Cup. Ne laissez pas un ancien nom de classe Chip ou Badge ici. À l'intérieur des accolades de la classe, écrivez une ligne de champ : int fill;. Il n'y a pas de méthode dans cette première boîte. Il n'y a pas de main dans Cup.java sur cette page. Enregistrez avant de compiler.

Cup with fill field

java
public class Cup {
    int fill;
}

Shelf assigne fill, puis l'affiche

Créez Shelf.java dans le même dossier. Sa ligne public class est public class Shelf. Dans main, écrivez trois lignes dans l'ordre : Cup c = new Cup();, puis c.fill = 3;, puis System.out.println(c.fill);. La première construit l'objet. La deuxième stocke 3 dans le fill de cet objet. La troisième affiche le nombre stocké.

Shelf sets and prints fill

java
public class Shelf {
    public static void main(String[] args) {
        Cup c = new Cup();
        c.fill = 3;
        System.out.println(c.fill);
    }
}

Depuis le dossier qui contient les deux fichiers, lancez javac Cup.java Shelf.java. Vous pouvez compiler d'abord Cup.java puis Shelf.java 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 Shelf — pas java Shelf.java, et pas java Cup. 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 : 3. 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 les trois lignes ci-dessus dans Shelf, avec le champ fill dans Cup.
Parcourez l'exécution une fois. Java démarre à Shelf.main. new Cup() construit un objet et le stocke dans c. L'affectation c.fill = 3 écrit 3 dans le champ de cet objet. println(c.fill) lit le même champ et affiche 3. Le nombre à l'écran est la valeur stockée sur l'objet, pas un affichage figé d'une chaîne comme "ok".
Le nom de champ fill est déclaré une fois dans la classe. Chaque objet construit à partir de Cup obtient son propre emplacement pour ce nom. Quand vous écrivez c.fill, vous nommez d'abord l'objet, puis l'emplacement sur cet objet. Cet ordre — objet, puis champ — est la forme que cette page conserve.

Classe, objet et champ côte à côte

Lisez les trois noms une fois dans un petit tableau. La ligne de champ passe toujours par un objet sur cette page.

📊 class object field

Name What it is on this page
Cup the class / type in Cup.java
c one object built with new Cup()
c.fill the int stored on that object

Écrire Cup.fill = 3; sans objet ne correspond pas à cette forme débutant. Le champ appartient à chaque objet après new. Construisez d'abord, puis assignez via la variable. Écrire seulement new Cup(); sans stocker le résultat vous laisse aussi sans nom pour fill. Gardez Cup c = new Cup(); puis c.fill = 3;.
Une démo d'objets restante peut embrouiller le dossier. Un fichier qui appelle encore c.beep(); avec une classe Chip est la leçon précédente. Pour cette page gardez Cup et Shelf et le champ fill. Vous n'avez pas besoin de beep ici.
Si vous affichez c lui-même avec System.out.println(c);, l'écran ne montrera pas un 3 propre. Il affiche un texte d'objet par défaut. Pour voir le nombre stocké, affichez c.fill.

Deux cups gardent des fills séparés

Vous pouvez construire deux objets à partir de Cup. Chacun a son propre fill. Changer l'un ne change pas l'autre.
Dans Shelf, vous pouvez écrire Cup a = new Cup(); et Cup b = new Cup();, puis a.fill = 2; et b.fill = 9;, puis afficher a.fill et b.fill. Après javac Cup.java Shelf.java et java Shelf, l'écran doit montrer 2 sur une ligne et 9 sur la suivante. Les deux objets partagent le texte de classe qui déclare fill, mais chaque objet tient son propre nombre.
Si les deux affichages montrent la même valeur alors que vous vouliez deux nombres différents, vérifiez que vous avez assigné les deux champs et que vous n'avez pas écrit Cup b = a;. Cette ligne fait pointer b vers le même objet que a, donc les deux noms partagent un fill. Sur cette page utilisez deux expressions new Cup() quand vous voulez deux fills séparés.
Vous n'avez pas besoin d'un troisième programme encadré pour cet exercice. Modifiez Shelf avec soin, recompilez et lancez à nouveau. Ensuite vous pouvez restaurer la boîte à un seul cup si vous voulez la première forme du quiz.

Ce que les constructeurs ajouteront plus tard

Cette page assigne le champ après new avec une ligne séparée : c.fill = 3;. Une page plus tard — constructeurs — montrera une autre façon de fixer des valeurs de départ quand l'objet est construit. Restez ici avec le champ simple et l'affectation après new. N'inventez pas une méthode constructeur sur cette page.
Des valeurs par défaut existent pour les champs que vous n'assignez jamais : un champ int commence à 0. Si vous affichez c.fill avant toute affectation, l'écran peut montrer 0. Cette page enseigne quand même l'affectation que vous écrivez vous-même, donc gardez c.fill = 3; avant l'affichage dans la démo principale.
Si javac ne trouve pas le symbole Cup en compilant Shelf.java, vérifiez que Cup.java est à côté de Shelf.java et que la ligne de classe est public class Cup. Si l'écran montre 0 alors que vous attendiez 3, la ligne d'affectation peut manquer ou s'exécuter après l'affichage — placez c.fill = 3; au-dessus de println(c.fill).

Avant les constructeurs

Vous pouvez déclarer int fill; dans Cup, construire Cup c = new Cup();, assigner c.fill = 3;, et afficher c.fill depuis Shelf. Compilez les deux fichiers et lancez java Shelf. L'écran montre 3. Deux objets peuvent tenir deux fills différents. La page suivante est constructeurs, où vous commencez à fixer des valeurs au moment où new construit l'objet.

🧠 Testez Vos Connaissances

Prêt à Commencer

Testez Vos Connaissances

Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet

❓
6
Questions
🎯
70%
Pour Réussir
♾️
∞
Temps
🔄
∞
Tentatives

📝 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