Модификатор override
override применяют только к методам
и свойствам, помеченным в базе как
virtual,
abstract
или уже перекрытым. Сигнатура должна
совпадать с базовой. Внутри тела часто
вызывают base.
Синтаксис
public override тип Метод()
{
// новая реализация
}
Пример
Давайте перекроем виртуальный метод:
using System;
class BaseTag
{
public virtual string GetTag()
{
return "12345";
}
}
class DerivedTag : BaseTag
{
public override string GetTag()
{
return "abcde";
}
}
class Program
{
static void Main()
{
BaseTag item = new DerivedTag();
Console.WriteLine(item.GetTag());
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте вызовем базовую версию через base:
using System;
class BaseSum
{
public virtual int GetValue()
{
return 3;
}
}
class ExtraSum : BaseSum
{
public override int GetValue()
{
return base.GetValue() + 2;
}
}
class Program
{
static void Main()
{
BaseSum item = new ExtraSum();
Console.WriteLine(item.GetValue());
}
}
Результат выполнения кода:
5
Пример
Давайте завершим абстрактный метод через override:
using System;
abstract class BaseFmt
{
public abstract string Format();
}
class PlainFmt : BaseFmt
{
public override string Format()
{
return "done";
}
}
class Program
{
static void Main()
{
BaseFmt item = new PlainFmt();
Console.WriteLine(item.Format());
}
}
Результат выполнения кода:
"done"