Contenu du cours
C# au-delà des Bases
C# au-delà des Bases
Constructeurs de Classe
Un constructeur de classe est le même qu'un constructeur de structure. C'est une méthode qui est exécutée lorsqu'un objet est créé.
La syntaxe pour créer un constructeur est la suivante :
index
class className { // ... other class code public className() { // code } }
Par exemple :
index
using System; class Player { public Player() { Console.WriteLine("A new player is created"); } } public class HelloWorld { public static void Main(string[] args) { Player p1 = new Player(); Player p2 = new Player(); Player p3 = new Player(); } }
Vous pouvez voir à partir de la sortie que l'instruction Console.WriteLine
à l'intérieur du constructeur Player est exécutée chaque fois qu'un nouvel objet est créé.
Voici un exemple de code du chapitre Constructeurs de structures. Le terme static
est expliqué dans les commentaires car il est plus pertinent ici, cependant, il n'est pas nécessaire de le comprendre complètement car ce concept sera expliqué en détail dans les sections ultérieures.
index
using System; struct Program { public static int totalPlayers = 0; struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }
Pour convertir la structure Player
en une classe, il suffit de changer le terme struct
en class
:
index
using System; class Program { // Unlike normal fields, a 'static' field can hold data even if there's no object. // Static fields have the same value for all objects. // Changing the value of a static field from one object changes it for all objects. // In this case the static field is part of the 'Program' class which represents the program itself // Therefore this field is essentially a global variable public static int totalPlayers = 0; struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }
De même, nous pouvons avoir des constructeurs avec certains arguments. Habituellement, cette méthode est utilisée pour faciliter l'initialisation des champs de classe :
index
using System; class Point { public double x; public double y; public Point(double x, double y) { // 'this' keyword is also used in classes just like how its used in structs this.x = x; this.y = y; } public void showCoordinates() { Console.WriteLine($"({x}, {y})"); } } class Program { static void Main(string[] args) { Point p1 = new Point(50, 70); Point p2 = new Point(70, 90); p1.showCoordinates(); p2.showCoordinates(); } }
À ce stade, nous avons couvert la plupart des concepts de base des Classes
, et à en juger par la syntaxe et le comportement, les Classes
semblent être exactement les mêmes que les Structs
, cependant, ce n'est pas vraiment le cas. Comme indiqué dans le premier chapitre de cette section, les Structs sont une version limitée des Classes qui ne fournissent qu'une fonctionnalité de base, tandis que les fonctionnalités des Classes sont beaucoup plus complexes et étendues. Dans cette section, nous avons couvert toutes les fonctionnalités similaires entre les Classes
et les Structs
. Dans les deux prochaines sections, nous apprendrons toutes les subtilités des classes et de la programmation orientée objet.
1. Quand une méthode constructeur est-elle appelée ?
2. Quel sera le nom d'une méthode constructeur dans une classe appelée "Animal" ?
3. Quel mot-clé est utilisé avant le nom d'un constructeur ?
Merci pour vos commentaires !