Объектно-ориентированный C#

Полиморфизм в C#

В этом уроке вы с помощью полиморфизма вызовете один и тот же метод у разных фигур через общий тип.

Введение

Полиморфизм (polymorphism) позволяет работать с объектами разных типов через общий тип, не проверяя каждый тип с помощью if. Каждый тип объекта сам решает, как выполнить свой метод.

Абстрактный класс Shape объявляет метод Area() без реализации, а Circle и Square реализуют каждый свой расчёт площади через override. Хотя переменная shape в цикле имеет общий тип Shape, во время выполнения вызывается нужная версия для каждого объекта, и получается 12.57 и 9.00.

Пример на C#, который можно запустить

C#
Запустить код →
Program.cs
using System;

abstract class Shape { public abstract double Area(); }
class Circle(double radius) : Shape { public override double Area() => Math.PI * radius * radius; }
class Square(double side) : Shape { public override double Area() => side * side; }

class Program
{
    static void Main()
    {
        Shape[] shapes = { new Circle(2), new Square(3) };
        foreach (Shape shape in shapes) Console.WriteLine($"{shape.Area():F2}");
    }
}
Результат выполнения
12.57
9.00

Практика с отладчиком

Поставьте точку останова на важное присваивание или условие, нажмите Debug и посмотрите локальные значения, прежде чем перейти к следующей строке.

Попрактикуйтесь на задаче

Примените материал этого урока к реальной задаче. Каждая задача запускается в браузере, с мгновенными тестами и разбором от ИИ.

Все задачи