Classes (Guide de programmation C#)

Une classe est le type de données le plus puissant en C#. Comme les structures, une classe définit les données et comportement du type de données. Les programmeurs peuvent ensuite créer des objets qui sont des instances de cette classe. À la différence des structures, les classes prennent en charge l'héritage, partie fondamentale de la programmation orientée objet. Pour plus d'informations, consultez Héritage.

Déclaration de classes

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

public class Customer
{
    //Fields, properties, methods and events go here...
}

Le mot clé class est précédé par le niveau d'accès. Dans ce cas, public est utilisé, ce qui signifie que n'importe qui peut créer des objets à partir de cette classe. Le nom de la classe suit le mot clé class. Le reste de la définition est le corps de la classe, où le comportement et les données sont définis. Les champs, propriétés, méthodes et événements d'une classe sont désignés collectivement par le terme membres de classe.

Création d'objets

Bien qu'ils soient quelquefois utilisés l'un à la place de l'autre, une classe et un objet sont des choses différentes. Une classe définit un type d'objet, mais il ne s'agit pas d'un objet en soi. Un objet est une entité concrète basée sur une classe ; quelquefois appelé une instance d'une classe.

Les objets peuvent être créés à l'aide du mot clé new suivi du nom de la classe sur lequel l'objet sera basé, comme suit :

Customer object1 = new Customer();

Lorsqu'une instance d'une classe est créée, une référence à l'objet est renvoyée au programmeur. Dans l'exemple ci-dessus, object1 est une référence à un objet basé sur Customer. Cette référence fait référence au nouvel objet, mais ne contient pas les données d'objet même. En fait, vous pouvez créer une référence d'objet sans créer d'objet du tout :

Customer object2;

La création de références d'objet comme celle-ci, qui ne fait pas référence à un objet, n'est pas recommandée car la tentative d'accès à un objet par le biais d'une telle référence échouera au moment de l'exécution. Toutefois, une telle référence peut être faite pour faire référence à un objet, soit en créant un objet, soit en l'assignant à un objet existant, comme suit :

Customer object3 = new Customer();
Customer object4 = object3;

Ce code crée deux références d'objet qui font toutes deux référence au même objet. Par conséquent, toute modification apportée à l'objet via object3 sera reflétée dans les utilisations suivantes de object4. C'est parce qu'il est fait référence aux objets basés sur les classes en tant que référence que les classes sont connues comme des types référence.

Héritage de classe

L'héritage se fait par le biais de l'utilisation d'une dérivation, ce qui signifie qu'une classe est déclarée au moyen d'une classe de base à partir de laquelle elle hérite des données et comportement. Une classe de base est spécifiée en ajoutant deux-points et le nom de la classe de base après le nom de la classe dérivée, comme suit :

public class Manager : Employee
{
    // Employee fields, properties, methods and events are inherited
    // New Manager fields, properties, methods and events go here...
}

Lorsqu'une classe déclare une classe de base, tous les membres de classe définis pour la classe de base font également partie de la nouvelle classe. Étant donné qu'une classe de base peut elle-même hériter d'une autre classe, qui a aussi hérité d'une autre classe, et ainsi de suite, une classe peut finir par posséder de nombreuses classes de base.

Exemple

Dans l'exemple suivant, une classe publique est définie, contenant un seul champ, une méthode et une méthode spéciale appelée un constructeur. Pour plus d'informations, consultez Constructeurs. La classe est ensuite instanciée avec le mot clé new.

public class Person
{
    // Field
    public string name;

    // Constructor
    public Person()
    {
        name = "unknown";
    }

    // Method
    public void SetName(string newName)
    {
        name = newName;
    }
}
class TestPerson
{
    static void Main()
    {
        Person person1 = new Person();
        System.Console.WriteLine(person1.name);

        person1.SetName("John Smith");
        System.Console.WriteLine(person1.name);
    }
}

Sortie

unknown

John Smith

Vue d'ensemble des classes

Les classes ont les propriétés suivantes :

  • Contrairement à C++, seul l'héritage unique est pris en charge : une classe peut hériter de l'implémentation d'une seule classe de base.

  • Une classe peut implémenter plusieurs interfaces. Pour plus d'informations, consultez Interfaces.

  • Les définitions de classe peuvent être fractionnées entre différents fichiers sources. Pour plus d'informations, consultez Définitions de classes partielles.

  • Les classes statiques sont des classes sealed contenant uniquement des méthodes statiques. Pour plus d'informations, consultez Classes statiques et membres de classe statique.

Spécification du langage C#

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

  • 1.6 Classes et objets

  • 10 Classes

Voir aussi

Référence

Membres (Guide de programmation C#)
Méthodes (Guide de programmation C#)
Destructeurs (Guide de programmation C#)
Objets (Guide de programmation C#)

Concepts

Guide de programmation C#

Autres ressources

Constructeurs (Guide de programmation C#)