class (référence C#)class (C# Reference)

Les classes sont déclarées à l’aide du mot clé class, comme l’illustre l’exemple suivant :Classes are declared using the keyword class, as shown in the following example:

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

NotesRemarks

Le langage C# ne permet qu'un seul héritage.Only single inheritance is allowed in C#. Cela signifie qu’une classe peut uniquement hériter de l’implémentation d’une seule classe de base.In other words, a class can inherit implementation from one base class only. Toutefois, une classe peut implémenter plusieurs interfaces.However, a class can implement more than one interface. Le tableau suivant répertorie des exemples d’héritage de classe et d’implémentation d’interface :The following table shows examples of class inheritance and interface implementation:

HéritageInheritance ExempleExample
Aucun.None class ClassA { }
SingleSingle class DerivedClass: BaseClass { }
Aucun, implémente deux interfacesNone, implements two interfaces class ImplClass: IFace1, IFace2 { }
Unique, implémente une seule interfaceSingle, implements one interface class ImplDerivedClass: BaseClass, IFace1 { }

Les classes que vous déclarez directement dans un espace de noms, non imbriquées dans d’autres classes, peuvent être public ou internal.Classes that you declare directly within a namespace, not nested within other classes, can be either public or internal. Par défaut, les classes sont internal.Classes are internal by default.

Les membres de classe, notamment les classes imbriquées, peuvent être public, protected internal, protected, internal, private ou private protected.Class members, including nested classes, can be public, protected internal, protected, internal, private, or private protected. Par défaut, ils sont private.Members are private by default.

Pour plus d’informations, consultez la page Modificateurs d’accès.For more information, see Access Modifiers.

Vous pouvez déclarer des classes génériques qui ont des paramètres de type.You can declare generic classes that have type parameters. Pour plus d’informations, consultez Classes génériques.For more information, see Generic Classes.

Une classe peut contenir les déclarations des membres suivants :A class can contain declarations of the following members:

ExempleExample

L’exemple suivant explique comment déclarer des champs, des constructeurs et des méthodes de classe.The following example demonstrates declaring class fields, constructors, and methods. Il illustre également l’instanciation d’un objet et l’impression des données d’une instance.It also demonstrates object instantiation and printing instance data. Dans cet exemple, deux classes sont déclarées.In this example, two classes are declared. La première, Child, contient deux champs privés (name et age), deux constructeurs publics et une méthode publique.The first class, Child, contains two private fields (name and age), two public constructors and one public method. La deuxième, StringTest, contient Main.The second class, StringTest, is used to contain Main.

class Child
{
    private int age;
    private string name;

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

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

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

class StringTest
{
    static void Main()
    {
        // Create objects by using the new operator:
        Child child1 = new Child("Craig", 11);
        Child child2 = new Child("Sally", 10);

        // Create an object using the default constructor:
        Child child3 = new Child();

        // Display results:
        Console.Write("Child #1: ");
        child1.PrintChild();
        Console.Write("Child #2: ");
        child2.PrintChild();
        Console.Write("Child #3: ");
        child3.PrintChild();
    }
}
/* Output:
    Child #1: Craig, 11 years old.
    Child #2: Sally, 10 years old.
    Child #3: N/A, 0 years old.
*/

CommentairesComments

Notez que, dans l’exemple précédant, les champs privés (name et age) ne sont accessibles que par le biais de la méthode publique de la classe Child.Notice that in the previous example the private fields (name and age) can only be accessed through the public method of the Child class. Par exemple, vous ne pouvez pas imprimer le nom de l’enfant à partir de la méthode Main en utilisant une instruction comme celle-ci :For example, you cannot print the child's name, from the Main method, using a statement like this:

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

L’accès aux membres privés de Child à partir de Main est uniquement possible si Main est un membre de la classe.Accessing private members of Child from Main would only be possible if Main were a member of the class.

Du fait que les types déclarés dans une classe sans modificateur d’accès sont par défaut private, les données membres dans cet exemple sont toujours private si le mot clé est supprimé.Types declared inside a class without an access modifier default to private, so the data members in this example would still be private if the keyword were removed.

Notez enfin que pour l’objet créé à l’aide du constructeur par défaut (child3), le champ age est initialisé par défaut à la valeur zéro.Finally, notice that for the object created using the default constructor (child3), the age field was initialized to zero by default.

spécification du langage C#C# language specification

Pour plus d'informations, voir la spécification du langage C#.For more information, see the C# Language Specification. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.The language specification is the definitive source for C# syntax and usage.

Voir aussiSee also