Chargement...

static en Java

Écrivez une classe Tag dans Tag.java avec une méthode static static void ping() qui affiche ok. Dans Yard.java, appelez Tag.ping(); depuis main sans new Tag() sur cette page. Compilez les deux fichiers et lancez java Yard. L'écran doit montrer une ligne : ok. La méthode appartient au nom de classe Tag, pas à une variable d'objet. Appeler via le nom de classe est ce que cette page enseigne.

Une méthode sur le nom de classe

Sur la page des méthodes d'instance vous écriviez j.bump() après new Jar(3). Cet appel avait besoin d'un objet. Une méthode static n'en a pas besoin. Vous écrivez Tag.ping(); avec le nom de classe. Java exécute cette méthode sans construire d'objet Tag d'abord sur cette page.
Créez d'abord Tag.java. La ligne public class est public class Tag. Ne laissez pas un ancien nom de classe Jar ou Tin ici. À l'intérieur des accolades écrivez une méthode :
static void ping() { System.out.println("ok"); }
Il n'y a ni champ ni constructeur dans cette première démo. Il n'y a pas de main dans Tag.java. Enregistrez avant de compiler. Le mot static se place dans l'en-tête de méthode avant void. Sans static, un appel ultérieur Tag.ping(); depuis Yard ne correspondra pas à la forme de méthode d'instance que cette page veut.

Tag with static ping

java
public class Tag {
    static void ping() {
        System.out.println("ok");
    }
}

Yard appelle Tag.ping

Créez Yard.java dans le même dossier. Sa ligne public class est public class Yard. Dans main, écrivez un appel : Tag.ping();. N'écrivez pas Tag t = new Tag(); sur cette page. N'écrivez pas t.ping(); comme chemin de leçon. Le nom de classe avant le point suffit.
Gardez Yard comme la classe qui contient main. Ne mettez pas main dans Tag pour cette leçon. Si un fichier Desk restant de la page des méthodes d'instance est encore dans le dossier, ne lancez pas java Desk pour cette leçon — lancez java Yard après avoir compilé Tag.java et Yard.java.

Yard calls Tag.ping

java
public class Yard {
    public static void main(String[] args) {
        Tag.ping();
    }
}

Depuis le dossier qui contient les deux fichiers, lancez javac Tag.java Yard.java. Vous pouvez compiler Tag.java d'abord et Yard.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 Yard — pas java Yard.java, et pas java Tag. 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 Tag.ping(); dans Yard, avec static void ping dans Tag.
Parcourez l'exécution une fois. Java démarre à Yard.main. L'appel Tag.ping() trouve la méthode static sur la classe Tag et exécute son corps. Le corps affiche ok. Aucun objet n'a été construit. L'écran montre ok. Rien d'autre ne doit s'afficher. Si vous voyez 4 ou 5, vous exécutez encore un ancien programme Desk de la leçon bump.
Si vous écrivez ping(); sans Tag. devant dans Yard.main, javac refuse dans cette forme. La méthode static a encore besoin de son nom de classe (ou d'un style d'import soigneux que vous n'utilisez pas encore). Gardez Tag.ping();. Si vous mettez void sans static, alors Tag.ping(); est le mauvais genre d'appel pour une méthode d'instance — remettez static. L'en-tête doit ressembler à static void ping(), pas à void ping() seul, et pas à static int ping() pour cette démo d'affichage.

Tag.ping et j.bump côte à côte

Un court tableau garde les deux formes d'appel claires.

📊 static vs instance call

Appel Besoin d'un objet d'abord ?
Tag.ping(); non — le nom de classe suffit
j.bump(); oui — après Jar j = new Jar(3);
static void ping() méthode sur la classe
void bump() méthode sur chaque objet
Le tableau n'est qu'un rappel. La ligne typée que vous gardez sur cette page est Tag.ping(); dans Yard, avec static void ping() dans Tag.

Comparé avec les méthodes d'instance

Sur la page des méthodes d'instance, j.bump() changeait fill sur un jar. Cela fonctionne encore. Cette page ne change pas de champ. Elle affiche seulement ok depuis une méthode static pour que vous voyiez l'appel par nom de classe. Une démo restante Jar j = new Jar(3); j.bump(); est une autre leçon. Pour cette page gardez Tag et Yard et Tag.ping();.
Vous pouvez encore construire des objets d'autres jours. Cette leçon choisit volontairement le chemin static. Ne mélangez pas j.bump() et Tag.ping() dans la même démo Yard sur cette page. Un chemin clair suffit : static sur la méthode, nom de classe avant l'appel, affichage ok. Quand plus tard vous aurez besoin des deux styles dans un programme, gardez chaque appel honnête — objet avant les méthodes d'instance, nom de classe avant les méthodes static — pour que le lecteur voie quel type vous vouliez.

Vous n'avez pas besoin de new Tag pour cet appel

Parce que ping est static, Yard n'alloue pas d'objet Tag avant l'appel. Écrire Tag t = new Tag(); puis t.ping(); peut compiler pour une méthode static dans bien des configurations, mais ce n'est pas la forme que cette page enseigne. Restez avec Tag.ping(); seul. Si l'écran montre 4 ou 5, une ancienne démo Desk bump tourne encore — passez à java Yard.
Si javac dit qu'il ne trouve pas le symbole ping sur Tag, vérifiez que l'en-tête de méthode inclut static et que les deux fichiers sont dans le même dossier. Si java Tag s'exécute sans rien d'utile, vous avez démarré la mauvaise classe — démarrez Yard, qui contient main.

Ce que cela laisse pour access

Cette page utilise une classe public et une méthode static visible dans le même dossier. Une page plus tard — access — montre des mots comme public et private sur les membres. Restez ici avec l'appel static. N'inventez pas private static sur cette page sauf si vous le connaissez déjà ; le but de la leçon est Tag.ping(); avec static void ping().
Quand le dossier tient encore Jar.java ou Desk.java, laissez-les ou supprimez-les seulement s'ils embrouillent votre commande de compilation. Lancez java Yard après avoir compilé la paire Tag et Yard de cette leçon.

Avant access

Vous pouvez écrire static void ping() { System.out.println("ok"); } dans Tag, et depuis Yard appeler Tag.ping(); sans objet. Compilez les deux fichiers et lancez java Yard. L'écran montre ok. La méthode static s'est exécutée sur le nom de classe. La page suivante est access, où vous contrôlez quels noms d'autres classes peuvent voir.
Gardez static sur la méthode. Gardez le nom de classe avant l'appel. Gardez main dans Yard. Ces trois habitudes sont le point de contrôle de cette page avant d'avancer.

🧠 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