TOC

This article is currently in the process of being translated into French (~99% done).

Classes:

Inheritance

L'un des aspects essentiels de la Programmation Orientée Objet (POO), qui est le concept sur lequel C# est construit, est l'héritage : la capacité à créer des classes qui héritent de plusieurs aspects de leurs classes parent. Le framework .NET tout entier est construit sur ce principe, ce qui mène au résultat "tout est objet". Même un simple nombre est une instance d'une classe qui hérite de la classe System.Object, bien que .NET nous aide un peu, ainsi vous pouvez assigner directement un nombre au lieu d'avoir à créer une nouvelle instance de la classe integer (par exemple).

Ce sujet peut être un peu difficile à appréhender mais parfois c'est plus facile avec des exemples. Donc commençons par un très simple:

public class Animal
{
    public void Greet()
    {
        Console.WriteLine("Hello, I'm some sort of animal!");
    }
}

public class Dog : Animal
{

}

Tout d'abord, on définit une classe Animal, avec une méthode très simple pour afficher un message. Ensuite, on définit une classe Dog and avec le signe 2 points ":", on dit à C# que la classe Dog doit hériter de la classe Animal. Ce qui est beau dans tout ceci est que cela a un sens dans le monde réel également - un Dog (chien) est assurément un Animal. Essayons d'utiliser les classes:

Animal animal = new Animal();
animal.Greet();
Dog dog = new Dog();
dog.Greet();

Si vous essayez cet exemple, vous allez constatez que même si nous n'avons pas défini un méthode Greet() pour la classe Dog, la classe sait quand même comment nous saluer, parce que elle hérite cette méthode de la classe Animal. Toutefois cette salutations est un peu anonyme, donc nous allons donc l'adapter quand nous savons quel animal c'est.

public class Animal
{
    public virtual void Greet()
    {
        Console.WriteLine("Hello, I'm some sort of animal!");
    }
}

public class Dog : Animal
{
    public override void Greet()
    {
        Console.WriteLine("Hello, I'm a dog!");
    }
}

En plus de la méthode ajoutée à la classe Dog, vous devriez remarquer deux choses : J'ai ajouté le mot clé virtual à la méthode de la classe Animal, et sur la classe Dog, j'utilise le mot clé override.

En C#, vous n'êtes pas autorisé à surcharger un membre d'une classe à moins qu'il ne soit pas marqué comme virtuel. Si vous le souhaitez, vous pouvez toujours accéder à la méthode héritée, même si vous la surcharger, en utilisant le mot clé : base.

public override void Greet()
{
    base.Greet();
    Console.WriteLine("Yes I am - a dog!");
}

Cependant, les méthodes ne sont pas les seules à être héritées. En fait, pratiquement tous les membres de la classe seront hérités, y compris les champs et les propriétés. Rappelez-vous les règles de visibilité, comme nous l'avons vu dans un chapitre précédent.

L'héritage n'est pas uniquement d'une classe à une autre. Vous pouvez avoir toute une hiérarchie de classes qui héritent les unes des autres. Par exemple, nous pouvons créer une classe Puppy, qui hérite de notre classe Dog, qui à sont tour hérite de la classe Animal. Ce que vous ne pouvez pas faire en C#, c'est de laisser une classe hériter de plusieurs autres classes en même temps. L'héritage multiple, comme on l'appelle, n'est pas pris en charge par C#.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!