Назад Вперед Зміст

Абстрактні методи у C#

Абстрактні методи — це методи, які оголошені у абстрактному класі, але не мають реалізації. Вони змушують усі похідні класи перевизначити ці методи та надати власну реалізацію.


Особливості абстрактних методів


Приклад: Абстрактний клас Figure

Базовий клас Figure містить два абстрактні методи: GetArea() та GetPerimeter(). Їх реалізують класи Triangle та Circle.


using System;

abstract class Figure
{
    public abstract double GetArea();
    public abstract double GetPerimeter();
}

class Triangle : Figure
{
    public double A { get; }
    public double B { get; }
    public double C { get; }

    public Triangle(double a, double b, double c)
    {
        A = a; B = b; C = c;
    }

    public override double GetArea()
    {
        double p = GetPerimeter() / 2;
        return Math.Sqrt(p * (p - A) * (p - B) * (p - C)); // Формула Герона
    }

    public override double GetPerimeter()
    {
        return A + B + C;
    }
}

class Circle : Figure
{
    public double Radius { get; }

    public Circle(double radius)
    {
        Radius = radius;
    }

    public override double GetArea()
    {
        return Math.PI * Radius * Radius;
    }

    public override double GetPerimeter()
    {
        return 2 * Math.PI * Radius;
    }
}

class Program
{
    static void Main()
    {
        Figure f1 = new Triangle(3, 4, 5);
        Figure f2 = new Circle(5);

        Console.WriteLine("Трикутник: площа = " + f1.GetArea() + ", периметр = " + f1.GetPerimeter());
        Console.WriteLine("Коло: площа = " + f2.GetArea() + ", довжина кола = " + f2.GetPerimeter());
    }
}

Таблиця тестування

Вхідні дані та результати роботи програми:

Фігура Параметри Площа Довжина границі
Трикутник 3, 4, 5 6 12
Коло R = 5 ≈ 78.54 ≈ 31.42

Висновок

Абстрактні методи забезпечують, щоб усі класи-нащадки реалізували необхідний набір методів. Це дозволяє створювати єдиний інтерфейс для різних об’єктів, залишаючи свободу у реалізації.

Назад Вперед Зміст