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

Абстрактный класс

Класс с модификатором abstract нельзя инстанцировать через new. В нём допускаются абстрактные методы и свойства - без тела, их реализуют в производных классах. Обычные члены абстрактного класса наследуются как в обычном class.

Синтаксис

abstract class Имя { public abstract int Метод(); }

Пример

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

using System; abstract class Shape { public abstract int Area(); } class Square : Shape { public int Side; public override int Area() { return Side * Side; } } class Program { static void Main() { Shape shape = new Square { Side = 3 }; Console.WriteLine(shape.Area()); } }

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

9

Пример

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

using System; abstract class Logger { public void Log(string text) { Console.WriteLine(text); } } class FileLogger : Logger { } class Program { static void Main() { var logger = new FileLogger(); logger.Log("abcde"); } }

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

"abcde"

Пример

Давайте хранить производный объект в переменной базового типа:

using System; abstract class Animal { public abstract string Name(); } class Cat : Animal { public override string Name() { return "cat"; } } class Program { static void Main() { Animal pet = new Cat(); Console.WriteLine(pet.Name()); } }

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

"cat"

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

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