Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1075 of 1492 menu
◀ ▶

Модификатор abstract

Класс с abstract нельзя создать через new. Абстрактный метод не имеет тела в базе - в производном классе для него пишут override. Обычные методы в абстрактном классе могут иметь реализацию и быть virtual.

Синтаксис

abstract class Base { public abstract тип Метод(); }

Пример

Давайте реализуем абстрактный метод в наследнике:

using System; abstract class Shape { public abstract string GetLabel(); } class Box : Shape { public override string GetLabel() { return "abcde"; } } class Program { static void Main() { Shape item = new Box(); Console.WriteLine(item.GetLabel()); } }

Результат выполнения кода:

"abcde"

Пример

Давайте сочетаем абстрактный и обычный метод:

using System; abstract class CounterBase { public int Value; public void AddOne() { Value++; } public abstract string Format(); } class Counter : CounterBase { public override string Format() { return Value.ToString(); } } class Program { static void Main() { var item = new Counter(); item.AddOne(); item.AddOne(); Console.WriteLine(item.Format()); } }

Результат выполнения кода:

"2"

Пример

Давайте перекроем виртуальный метод в том же наследнике:

using System; abstract class BaseRow { public virtual string Head() { return "12345"; } public abstract string Tail(); } class Row : BaseRow { public override string Head() { return "abcde"; } public override string Tail() { return "done"; } } class Program { static void Main() { BaseRow item = new Row(); Console.WriteLine(item.Head() + " " + item.Tail()); } }

Результат выполнения кода:

abcde done

Смотрите также

  • override,
    который завершает абстрактный метод
  • virtual,
    который разрешает перекрытие с телом в базе
  • sealed,
    который запрещает дальнейшее наследование
  • наследование,
    которое связывает абстрактную базу и класс
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить