Ключевое слово base
В конструкторе наследника base(...)
передаёт аргументы конструктору базы.
В методе с override
выражение base.Метод() выполняет
реализацию базовой версии. Обратиться к
base можно только из производного
класса.
Синтаксис
public Derived(тип arg) : base(arg) { }
public override тип Метод()
{
return base.Метод();
}
Пример
Давайте вызовем конструктор базы через base:
using System;
class BaseRow
{
public string Text;
public BaseRow(string text)
{
Text = text;
}
}
class DerivedRow : BaseRow
{
public DerivedRow(string text) : base(text)
{
}
}
class Program
{
static void Main()
{
var item = new DerivedRow("abcde");
Console.WriteLine(item.Text);
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте дополним результат методом базы:
using System;
class BaseTag
{
public virtual string GetTag()
{
return "12345";
}
}
class DerivedTag : BaseTag
{
public override string GetTag()
{
return base.GetTag() + "a";
}
}
class Program
{
static void Main()
{
BaseTag item = new DerivedTag();
Console.WriteLine(item.GetTag());
}
}
Результат выполнения кода:
"12345a"
Пример
Давайте вызовем ToString базы через base:
using System;
class Row
{
public override string ToString()
{
return base.ToString() + " row";
}
}
class Program
{
static void Main()
{
var item = new Row();
Console.WriteLine(item.ToString());
}
}
Результат выполнения кода:
"Row row"
Смотрите также
-
this,
которое ссылается на текущий экземпляр -
override,
который часто вызываетbaseвнутри тела -
наследование,
которое связывает базовый и производный тип -
virtual,
который открывает метод для перекрытия