base (référence C#)

Le mot clé base sert à accéder aux membres de la classe de base à partir d’une classe dérivée. Utilisez-le si vous souhaitez :

  • Il appelle une méthode de la classe de base qui a été substituée par une autre méthode.

  • Il spécifie quel constructeur de classe de base doit être appelé lors de la création d’instances de la classe dérivée.

L’accès à une classe de base est autorisé uniquement dans un constructeur, une méthode d’instance et un accesseur de propriété d’instance.

L’utilisation du mot clé base à partir d’une méthode statique entraîne une erreur.

La classe de base accessible est la classe de base spécifiée dans la déclaration de classe. Par exemple, si vous spécifiez class ClassB : ClassA, les membres de ClassA sont accessibles à partir de ClassB, quelle que soit la classe de base de ClassA.

Exemple 1

Dans cet exemple, la classe de base Person et la classe dérivée Employee ont toutes les deux une méthode nommée GetInfo. En utilisant le mot clé base, vous pouvez appeler la méthode GetInfo de la classe de base à partir de la classe dérivée.

public class Person
{
    protected string ssn = "444-55-6666";
    protected string name = "John L. Malgraine";

    public virtual void GetInfo()
    {
        Console.WriteLine("Name: {0}", name);
        Console.WriteLine("SSN: {0}", ssn);
    }
}
class Employee : Person
{
    public string id = "ABC567EFG";
    public override void GetInfo()
    {
        // Calling the base class GetInfo method:
        base.GetInfo();
        Console.WriteLine("Employee ID: {0}", id);
    }
}

class TestClass
{
    static void Main()
    {
        Employee E = new Employee();
        E.GetInfo();
    }
}
/*
Output
Name: John L. Malgraine
SSN: 444-55-6666
Employee ID: ABC567EFG
*/

Pour obtenir d’autres exemples, consultez new, virtual et override.

Exemple 2

Cet exemple montre comment spécifier le constructeur de classe de base qui est appelé lors de la création d’instances d’une classe dérivée.

public class BaseClass
{
    int num;

    public BaseClass()
    {
        Console.WriteLine("in BaseClass()");
    }

    public BaseClass(int i)
    {
        num = i;
        Console.WriteLine("in BaseClass(int i)");
    }

    public int GetNum()
    {
        return num;
    }
}

public class DerivedClass : BaseClass
{
    // This constructor will call BaseClass.BaseClass()
    public DerivedClass() : base()
    {
    }

    // This constructor will call BaseClass.BaseClass(int i)
    public DerivedClass(int i) : base(i)
    {
    }

    static void Main()
    {
        DerivedClass md = new DerivedClass();
        DerivedClass md1 = new DerivedClass(1);
    }
}
/*
Output:
in BaseClass()
in BaseClass(int i)
*/

spécification du langage C#

Pour plus d'informations, voir la spécification du langage C#. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.

Voir aussi