Абстрактні методи — це методи, які оголошені у абстрактному класі, але не мають реалізації. Вони змушують усі похідні класи перевизначити ці методи та надати власну реалізацію.
override.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 |
Абстрактні методи забезпечують, щоб усі класи-нащадки реалізували необхідний набір методів. Це дозволяє створювати єдиний інтерфейс для різних об’єктів, залишаючи свободу у реалізації.