Наследование
После имени класса пишут двоеточие и базовый тип.
Производный класс наследует public и
protected
члены базы. Чтобы изменить поведение метода,
используют virtual
и override.
Контракт без реализации задают через
интерфейс.
Синтаксис
class Производный : Базовый
{
// дополнительные члены
}
Пример
Давайте унаследуем класс и вызовем метод базы:
using System;
class BaseRow
{
public string GetText()
{
return "abcde";
}
}
class DerivedRow : BaseRow
{
}
class Program
{
static void Main()
{
var row = new DerivedRow();
Console.WriteLine(row.GetText());
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте добавим поле только в производном классе:
using System;
class BaseNum
{
public int Value = 1;
}
class ExtraNum : BaseNum
{
public int Extra = 2;
}
class Program
{
static void Main()
{
var item = new ExtraNum();
Console.WriteLine(item.Value + " " + item.Extra);
}
}
Результат выполнения кода:
1 2
Пример
Давайте перекроем виртуальный метод в наследнике:
using System;
class BaseLabel
{
public virtual string GetLabel()
{
return "base";
}
}
class DerivedLabel : BaseLabel
{
public override string GetLabel()
{
return "derived";
}
}
class Program
{
static void Main()
{
BaseLabel item = new DerivedLabel();
Console.WriteLine(item.GetLabel());
}
}
Результат выполнения кода:
"derived"
Смотрите также
-
virtual,
который разрешает перекрытие в наследнике -
override,
который подменяет реализацию базы -
base,
которое обращается к члену базового класса -
реализация интерфейса,
которая задаёт контракт типа