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

Общий метод абстрактного класса в C#

Абстрактный класс может содержать и готовые методы с телом, не только абстрактные объявления.

Общий код удобно держать в базе: один метод вызывает абстрактные, а потомки подставляют только формулы. Запишем Figure с методом Describe и выведем отчет для круга:

abstract class Figure { public abstract int Area(); public abstract int Perimeter(); public void Describe() { Console.WriteLine(Area() + " " + Perimeter()); } } class Circle : Figure { public int Radius; public Circle(int radius) { Radius = radius; } public override int Area() { return 3 * Radius * Radius; } public override int Perimeter() { return 2 * 3 * Radius; } }

Создадим объект класса Circle и выведем общий отчет:

var circle = new Circle(2); circle.Describe();

При вызове Describe у объекта Circle срабатывает полиморфизм: внутри базового метода выполняются переопределенные Area и Perimeter. Потомки не дублируют вывод - они только считают числа.

Сделайте в Figure метод Describe, который выводит площадь и периметр. Реализуйте класс Circle с абстрактными методами Area и Perimeter.

Сделайте абстрактный Document с абстрактным методом Render. Сделайте PdfDocument и HtmlDocument, возвращающие из Render свою строку.

Добавьте в Document метод Title с общим заголовком и абстрактный метод FormatName. Реализуйте FormatName в каждом наследнике.

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