Chargement...

Objets en Java

Écrivez une classe nommée Chip dans Chip.java avec une méthode beep qui affiche ok. La méthode n'est pas static sur cette page. Dans un second fichier Bench.java, construisez un chip avec Chip c = new Chip();, puis appelez c.beep();. Compilez les deux fichiers et lancez java Bench. L'écran doit montrer une ligne : ok. Le mot new construit un objet à partir de la classe. La variable c tient cet objet. Vous appelez beep sur c, pas sur le nom nu de la classe. Cet objet construit — et l'appel qui l'utilise — est ce que cette page enseigne.

Un objet à partir de la classe

Une classe reste le type nommé. Un objet est une valeur construite à partir de ce type. La ligne new Chip() demande à Java de construire cette valeur. Vous la stockez dans une variable de type Chip, puis vous utilisez la variable pour atteindre les méthodes qui appartiennent à chaque objet.
Créez d'abord Chip.java. La ligne public class est public class Chip. Ne laissez pas un ancien nom de classe Badge ou Desk dans ce fichier. À l'intérieur des accolades, écrivez void beep() — pas le mot static dans cet en-tête. Le corps est un affichage : System.out.println("ok");. Gardez void. La méthode ne renvoie pas un nombre. Il n'y a pas de main dans Chip.java sur cette page. Enregistrez le fichier avant de compiler.

Chip with beep

java
public class Chip {
    void beep() {
        System.out.println("ok");
    }
}

Bench construit le chip, puis appelle beep

Créez Bench.java dans le même dossier. Sa ligne public class est public class Bench. Dans main, écrivez deux lignes : d'abord Chip c = new Chip();, puis c.beep();. La première déclare une variable c de type Chip et la remplit avec un nouvel objet. La seconde appelle beep sur cet objet. Le point se place après le nom de variable, pas seulement après le nom de classe.

Bench builds one chip

java
public class Bench {
    public static void main(String[] args) {
        Chip c = new Chip();
        c.beep();
    }
}

Depuis le dossier qui contient les deux fichiers, lancez javac Chip.java Bench.java. Vous pouvez compiler d'abord Chip.java puis Bench.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 Bench — pas java Bench.java, et pas java Chip. 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 : ok. 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 Chip c = new Chip(); plus c.beep(); dans Bench, avec beep dans Chip.
Parcourez l'exécution une fois. Java démarre à Bench.main. L'expression new Chip() construit un objet. Cet objet est stocké dans c. L'appel c.beep() entre dans beep pour cet objet. La méthode affiche ok et revient. Puis Bench se termine. La ligne à l'écran vient de la méthode de l'objet, après que new a créé l'objet.
Pensez la classe comme le plan sur disque et l'objet comme une pièce construite en mémoire pour cette exécution. Vous compilez le plan une fois. Chaque new Chip() construit une autre pièce. La variable nomme la pièce pour que les lignes suivantes l'atteignent. Sans ce nom, il ne reste pas de poignée pour beep sur cette page.

Pourquoi l'appel utilise c, pas Chip seul

Sur la page des classes, une méthode static pouvait s'appeler Badge.show() avec le nom du type. Ici beep n'a pas le mot static. Java attend d'abord un objet. Écrire Chip.beep(); sans objet ne correspond pas à cette forme débutant. Construisez avec new, gardez le résultat dans une variable, puis appelez via cette variable.
Si vous écrivez seulement new Chip(); et ne stockez jamais, vous avez quand même construit un objet, mais plus de nom pour appeler beep. Sur cette page gardez la variable : Chip c = new Chip(); puis c.beep();. La variable est le chemin vers l'objet après la fin de new.
Une démo static restante peut embrouiller le dossier. Un fichier qui appelle encore Badge.show(); est la forme de la leçon précédente. Pour cette page gardez Chip et Bench et la ligne new. Vous n'avez pas besoin de Badge ici.

Deux objets, deux beeps

Vous pouvez construire plus d'un objet à partir de la même classe. Chaque new Chip() fait un objet séparé. Chaque objet peut exécuter beep pour lui-même. Le texte de la classe est partagé ; les objets ne sont pas la même valeur.

Bench builds two chips

java
public class Bench {
    public static void main(String[] args) {
        Chip a = new Chip();
        Chip b = new Chip();
        a.beep();
        b.beep();
    }
}

Compilez et lancez à nouveau : javac Chip.java Bench.java, puis java Bench. L'écran doit montrer deux lignes : ok, puis ok. La première vient de a. La seconde de b. Les deux ont utilisé le même texte de méthode beep dans Chip, mais chaque appel a tourné sur un objet différent construit avec new.
Si l'écran ne montre qu'un ok, vérifiez que les deux appels sont présents et que les deux variables ont été construites avec new. Écrire Chip b = a; ne construit pas un second objet ; cela fait pointer b vers le même objet que a. Cette idée attend des pages plus tard. Sur cette page utilisez deux expressions new Chip() quand vous voulez deux objets.

Ce que cette page laisse pour fields

Cette page ne stocke pas encore un nombre ou un mot dans le chip. Les champs — des noms qui tiennent des données sur chaque objet — sont la page suivante. Ici l'objet existe après new, et la méthode d'instance beep affiche seulement. Cela suffit pour voir la séparation entre la classe comme type et un objet comme valeur construite.
Vous pouvez renommer la variable de c en unit : Chip unit = new Chip(); puis unit.beep();. L'écran reste ok quand le corps de la méthode affiche encore ce mot. Le nom de variable est le vôtre ; le nom de type Chip et l'expression new Chip() doivent toujours correspondre.
Si javac dit qu'il ne trouve pas le symbole Chip en compilant Bench.java, vérifiez que Chip.java est dans le même dossier et que la ligne de classe dit vraiment public class Chip. Si l'exécution n'affiche rien, confirmez que main appelle encore c.beep(); après la ligne new et que beep contient encore println.

Avant fields

Vous pouvez écrire Chip avec void beep(), construire un objet avec Chip c = new Chip();, et appeler c.beep(); depuis Bench. Compilez les deux fichiers et lancez java Bench. L'écran montre ok. Un second new Chip() construit un autre objet qui peut beep seul. La page suivante est fields ; là chaque objet commence à tenir ses propres données stockées.

🧠 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

❓
5
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