class (Référence C#)

Les classes sont déclarées à l'aide du mot clé class, comme illustré dans l'exemple suivant :

      class TestClass
{
    // Methods, properties, fields, events, delegates 
    // and nested classes go here.
}

Notes

Contrairement au langage C++, seul le modèle d'héritage unique est autorisé dans le langage C#. Cela signifie qu'une classe ne peut hériter de l'implémentation que d'une seule classe de base. En revanche, une classe peut implémenter plusieurs interfaces. Le tableau suivant comporte des exemples d'héritage de classe et d'implémentation d'interface.

Héritage Exemple

None (Aucun)

class ClassA { }

Unique

class DerivedClass: BaseClass { }

Aucun, implémente deux interfaces

class ImplClass: IFace1, IFace2 { }

Unique, implémente une seule interface

class ImplDerivedClass: BaseClass, IFace1 { }

Les niveaux d'accès protected et private ne sont autorisés que pour des classes imbriquées.

Vous pouvez également déclarer des classes génériques qui ont des paramètres de type ; consultez Classes génériques pour plus d'informations.

Une classe peut contenir les déclarations des membres suivants :

Exemple

L'exemple suivant explique comment déclarer des champs, constructeurs et méthodes de classe. Il illustre aussi l'instanciation d'un objet et l'impression des données d'une instance. Dans cet exemple, deux classes sont déclarées. La première classe, Kid, contient deux champs privés (name et age) et deux méthodes publiques. La deuxième classe, MainClass, est utilisée pour contenir Main.

// keyword_class.cs
// class example
using System;
class Kid
{
    private int age;
    private string name;

    // Default constructor:
    public Kid()
    {
        name = "N/A";
    }

    // Constructor:
    public Kid(string name, int age)
    {
        this.name = name;
        this.age = age;
    }

    // Printing method:
    public void PrintKid()
    {
        Console.WriteLine("{0}, {1} years old.", name, age);
    }
}

class MainClass
{
    static void Main()
    {
        // Create objects
        // Objects must be created using the new operator:
        Kid kid1 = new Kid("Craig", 11);
        Kid kid2 = new Kid("Sally", 10);

        // Create an object using the default constructor:
        Kid kid3 = new Kid();

        // Display results:
        Console.Write("Kid #1: ");
        kid1.PrintKid();
        Console.Write("Kid #2: ");
        kid2.PrintKid();
        Console.Write("Kid #3: ");
        kid3.PrintKid();
    }
}

Sortie

 
Kid #1: Craig, 11 years old.
Kid #2: Sally, 10 years old.
Kid #3: N/A, 0 years old.

Commentaires

Notez que, dans l'exemple qui précède, les champs privés (name et age) ne sont accessibles que par le biais des méthodes publiques de la classe Kid. Par exemple, vous ne pouvez pas imprimer le nom de l'enfant, à partir de la méthode Main, en utilisant une instruction de ce type :

Console.Write(kid1.name);   // Error

L'accès aux membres privés de Kid à partir de Main serait possible uniquement si Main était un membre de la classe.

Les types déclarés à l'intérieur d'une classe sans modificateur d'accès prennent par défaut la valeur private. Par conséquent, les données membre de cet exemple seraient toujours private si le mot clé était supprimé.

Notez enfin que pour l'objet créé à l'aide du constructeur par défaut (kid3), le champ a été initialisé par défaut à la valeur zéro.

Spécification du langage C#

Pour plus d'informations, consultez les sections suivantes dans Spécifications du langage C#.

  • 1.6 Classes et objets

  • 3.4.4 Membres de classe

  • 4.2.1 Types classe

  • 10 Classes

Voir aussi

Référence

Mots clés C#
Types référence (Référence C#)

Concepts

Guide de programmation C#

Autres ressources

Référence C#