Méthodes d'instance
Écrivez une classe Jar avec un champ int nommé fill, un constructeur Jar(int n) qui pose fill = n;, et une méthode d'instance void bump() qui exécute fill = fill + 1;. Dans Pine, gardez Main et construisez un jar avec Jar j = new Jar(3);, appelez j.bump();, puis écrivez j.fill. Gardez les deux types dans le même fichier d'enseignement pour que dotnet run reste simple. Lancez avec dotnet run. L'écran doit montrer une ligne : 4. La méthode tourne sur cet unique objet et change son champ. Appeler une méthode via la variable d'objet est ce que cette page enseigne. Gardez la classe publique de démarrage nommée Pine.
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 siège 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.
Ouvrez le fichier Pine. Le nom de la classe de démarrage reste Pine. Cette page ne renomme pas le démarreur. Supprimez tout reste Tin t = new Tin(7); si cet appel de la page this est encore tout ce que vous avez dans Main. Supprimez tout reste de classe Tin. Supprimez toute ligne ReadLine. Le fichier que vous gardez n'attend pas de frappe.
Hors des accolades de Pine — toujours dans le même fichier — écrivez public class Jar. À 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 sur cette page. Enregistrez le fichier avant de lancer.
L'en-tête de la méthode a besoin de void parce que bump ne renvoie pas de valeur à écrire. Le constructeur n'a toujours pas de void — gardez cette différence claire.
using System;
public class Jar
{
int fill;
Jar(int n)
{
fill = n;
}
void bump()
{
fill = fill + 1;
}
}
Pine construit un jar et appelle bump
Pine garde public static void Main(). À l'intérieur de Main, écrivez trois lignes dans l'ordre : Jar j = new Jar(3);, puis j.bump();, puis Console.WriteLine(j.fill);. Le constructeur stocke 3. L'appel j.bump() ajoute un. L'écriture montre la nouvelle valeur. Vous n'écrivez pas Tin t = new Tin(7); sur cette page. C'était la leçon this.
using System;
public class Pine
{
public static void Main()
{
Jar j = new Jar(3);
j.bump();
Console.WriteLine(j.fill);
}
}
public class Jar
{
int fill;
Jar(int n)
{
fill = n;
}
void bump()
{
fill = fill + 1;
}
}
Relisez le fichier conservé depuis le haut. using System; prépare les noms courts. public class Pine est le démarreur. public static void Main() est l'endroit où le runtime commence. 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 écrit j.fill et l'écran montre 4.
Lancez avec dotnet run. Le programme écrit une ligne et s'arrête. Il n'attend pas que vous tapiez. Si dotnet run attend, ReadLine est encore dans le fichier. Supprimez cette ligne et gardez new Jar(3), j.bump(), et l'écriture dans Pine, avec bump dans Jar. L'écran montre 4. Si l'écran montre 7, une démo Tin restante tourne encore. Si l'écran montre 3, l'appel bump peut manquer ou tourner après l'écriture.
Si vous écrivez bump(); sans j. devant, la compilation 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 cette page. Gardez j.bump();.
Comparé avec this et avec l'assignation simple de champ
Sur la page this vous stockiez un champ à l'intérieur du constructeur avec des noms assortis. Cela marche encore. Cette page ajoute une méthode que vous pouvez appeler plus tard, après que l'objet existe déjà. Un reste Tin t = new Tin(7); avec this.size = size; est une autre leçon. Pour cette page gardez Jar et Pine 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. Écrire seulement Console.WriteLine(j); ne montre pas un 4 propre. Écrivez Console.WriteLine(j.fill); pour voir le nombre stocké.
Deux bumps sur un jar
Vous pouvez appeler j.bump(); deux fois avant d'écrire. Commencez avec new Jar(3), un bump jusqu'à 4, un second bump jusqu'à 5, puis écrivez. Ce contrôle tient dans une petite seconde démo pine.
using System;
public class Pine
{
public static void Main()
{
Jar j = new Jar(3);
j.bump();
j.bump();
Console.WriteLine(j.fill);
}
}
public class Jar
{
int fill;
Jar(int n)
{
fill = n;
}
void bump()
{
fill = fill + 1;
}
}
Lancez à nouveau avec dotnet run. L'écran doit montrer 5. Chaque appel à bump a tourné 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 bumps sur un jar suffisent pour voir la méthode tourner deux fois.
Si l'écran montre encore 3, les appels bump peuvent manquer ou Main peut encore écrire 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 cette page laisse à 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 à l'appel d'instance ici. 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.
Ne nidez pas Jar à l'intérieur des accolades de Pine. Sur cette page les deux classes siègent comme sœurs dans le fichier. Si la compilation ne trouve pas Jar en compilant Pine, vérifiez que public class Jar se trouve dans le même fichier. Si l'écran montre 0, le constructeur peut manquer le stockage, ou bump ne tourne jamais — gardez Jar(int n) { fill = n; } et j.bump(); avant l'écriture.
Vous pouvez déclarer int fill;, écrire Jar(int n) { fill = n; } et void bump() { fill = fill + 1; }, et depuis Pine.Main lancer Jar j = new Jar(3);, j.bump();, puis écrire j.fill. Lancez avec dotnet run. L'écran montre 4. La méthode d'instance a tourné sur cet objet et a changé son champ. Voyez bump comme une action que le jar peut faire après qu'il existe. Pine reste la porte que vous ouvrez avec dotnet run. 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 avant l'appel : j.bump();. Gardez l'écriture sur j.fill. Ces trois habitudes sont le point de contrôle de cette page avant de passer à la suite.
🧠 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