Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Słowo base
kluczowe służy do uzyskiwania dostępu do składowych klasy bazowej z klasy pochodnej. Użyj go, jeśli chcesz:
- Wywołaj metodę w klasie bazowej przesłoniętą przez inną metodę.
- Określ, który konstruktor klasy bazowej powinien być wywoływany podczas tworzenia wystąpień klasy pochodnej.
Dostęp do klasy bazowej jest dozwolony tylko w konstruktorze, w metodzie instancji i w akcesorze właściwości instancji.
base
Użycie słowa kluczowego z metody statycznej powoduje błąd.
Dostępną klasą bazową jest klasa bazowa określona w deklaracji klasy. Na przykład, jeśli określisz class ClassB : ClassA
, do elementów ClassA uzyskuje się dostęp z ClassB, niezależnie od klasy bazowej ClassA.
W tym przykładzie zarówno klasa Person
bazowa, jak i klasa Employee
pochodna mają metodę o nazwie GetInfo
. Używając słowa kluczowego base
, można wywołać GetInfo
metodę klasy bazowej z klasy pochodnej.
public class Person
{
protected string ssn = "444-55-6666";
protected string name = "John L. Malgraine";
public virtual void GetInfo()
{
Console.WriteLine($"Name: {name}");
Console.WriteLine($"SSN: {ssn}");
}
}
class Employee : Person
{
public readonly string id = "ABC567EFG";
public override void GetInfo()
{
// Calling the base class GetInfo method:
base.GetInfo();
Console.WriteLine($"Employee ID: {id}");
}
}
class TestClass
{
static void Main()
{
Employee E = new Employee();
E.GetInfo();
}
}
/*
Output
Name: John L. Malgraine
SSN: 444-55-6666
Employee ID: ABC567EFG
*/
W tym przykładzie pokazano, jak określić konstruktor klasy bazowej wywoływany podczas tworzenia wystąpień klasy pochodnej.
public class BaseClass
{
private int num;
public BaseClass() =>
Console.WriteLine("in BaseClass()");
public BaseClass(int i)
{
num = i;
Console.WriteLine("in BaseClass(int i)");
}
public int GetNum() => 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)
*/
Aby uzyskać więcej przykładów, zobacz nowe, wirtualne i przesłonięcia.
Specyfikacja języka C#
Aby uzyskać więcej informacji, zapoznaj się ze specyfikacją języka C#