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.