Модификатор sealed
sealed class закрывает иерархию -
от такого типа нельзя унаследовать класс.
sealed override ставят на метод,
который уже перекрыт через
override,
чтобы наследники не меняли его снова.
Закрытый класс по-прежнему может реализовывать
интерфейсы.
Синтаксис
sealed class Имя { }
public sealed override тип Метод() { }
Пример
Давайте создадим экземпляр sealed класса:
using System;
sealed class Token
{
public string Code = "abcde";
}
class Program
{
static void Main()
{
var item = new Token();
Console.WriteLine(item.Code);
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте закроем перекрытый метод через sealed override:
using System;
class BaseA
{
public virtual string GetTag()
{
return "base";
}
}
class MiddleA : BaseA
{
public sealed override string GetTag()
{
return "sealed";
}
}
class Program
{
static void Main()
{
BaseA item = new MiddleA();
Console.WriteLine(item.GetTag());
}
}
Результат выполнения кода:
"sealed"
Пример
Давайте унаследуем обычный класс и перекроем метод:
using System;
class OpenBase
{
public virtual string GetCode()
{
return "12345";
}
}
class OpenDerived : OpenBase
{
public override string GetCode()
{
return "abcde";
}
}
class Program
{
static void Main()
{
OpenBase item = new OpenDerived();
Console.WriteLine(item.GetCode());
}
}
Результат выполнения кода:
"abcde"
Смотрите также
-
override,
который перекрывает виртуальный член -
virtual,
который открывает метод для перекрытия -
abstract,
который задаёт незавершённый контракт -
наследование,
котороеsealedможет оборвать