Абстрактный класс C: основы и применение

Абстрактный класс в программировании с языке C# является классом, который не может быть непосредственно инициализирован или использован для создания объектов. Он предназначен для того, чтобы служить базовым классом для других классов и содержит объявления методов, свойств и событий без их реализации.

Для объявления абстрактного класса используется ключевое слово abstract перед его определением. Например, рассмотрим следующий пример кода:


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

class Rectangle : Shape
{
    private double width;
    private double height;
    
    public Rectangle(double width, double height)
    {
        this.width = width;
        this.height = height;
    }
    
    public override double GetArea()
    {
        return width * height;
    }
    
    public override double GetPerimeter()
    {
        return 2 * (width + height);
    }
}

class Circle : Shape
{
    private double radius;
    
    public Circle(double radius)
    {
        this.radius = radius;
    }
    
    public override double GetArea()
    {
        return Math.PI * radius * radius;
    }
    
    public override double GetPerimeter()
    {
        return 2 * Math.PI * radius;
    }
}

В этом примере у нас есть абстрактный класс Shape, который содержит два абстрактных метода GetArea() и GetPerimeter(). Эти методы объявляются без реализации и должны быть переопределены в производных классах.

Затем мы создаем два производных класса Rectangle и Circle, которые наследуются от абстрактного класса Shape. В каждом из этих классов мы переопределяем методы GetArea() и GetPerimeter() соответственно.

Теперь давайте рассмотрим ситуацию, когда мы хотим использовать абстрактный класс и его производные классы в другой части кода:


class Program
{
    static void Main(string[] args)
    {
        Shape shape1 = new Rectangle(5, 10);
        double area1 = shape1.GetArea();
        double perimeter1 = shape1.GetPerimeter();
        
        Shape shape2 = new Circle(3);
        double area2 = shape2.GetArea();
        double perimeter2 = shape2.GetPerimeter();
        
        Console.WriteLine($"Площадь прямоугольника: {area1} единиц.");
        Console.WriteLine($"Периметр прямоугольника: {perimeter1} единиц.");
        
        Console.WriteLine($"Площадь круга: {area2} единиц.");
        Console.WriteLine($"Периметр круга: {perimeter2} единиц.");
    }
}

В данном примере мы создаем экземпляры классов Rectangle и Circle, используя абстрактный класс Shape. Затем мы вызываем методы GetArea() и GetPerimeter() для каждого из этих объектов и выводим результат в консоль.

Результат работы программы будет следующим:


Площадь прямоугольника: 50 единиц.
Периметр прямоугольника: 30 единиц.

Площадь круга: 28.2743338823081 единиц.
Периметр круга: 18.8495559215388 единиц.

Вывод программы показывает правильно рассчитанные значения площади и периметра для прямоугольника и круга, так как мы использовали переопределенные методы у производных классов.

Таким образом, абстрактные классы в C# позволяют создавать общее определение методов и свойств без их конкретной реализации, что облегчает создание иерархии классов и повторное использование кода.

Похожие вопросы на: "абстрактный класс c "

PHP foreach: использование цикла foreach в PHP
Dec to Hex - конвертер чисел из десятичной в шестнадцатеричную систему счисления
HTML перенос строки: основные методы и теги
If Bash - работа с условными операторами в командной оболочке
MSVCR100.dll: библиотека Microsoft Visual C++
Руководство по использованию CSS свойства position: sticky
Arduino Map - интерактивная карта для проектов на Arduino
Teachable Machine - Создайте свою модель машинного обучения
Priority Queue: управление задачами с учетом приоритетов
Сравнение C++ и C# - выберите лучший язык программирования