C#: ООП. Интерфейсы

Spread the love

Интерфейсы в C# представляют собой контракты, которые определяют набор методов и свойств, которые должны быть реализованы классами, которые реализуют эти интерфейсы. Интерфейсы определяют поведение, которое классы должны предоставить, но не определяют их реализацию. Это позволяет достичь абстракции и разделения интерфейса и реализации.

Основные особенности интерфейсов:

1. Интерфейсы определяют только сигнатуры методов (без реализации) и свойств (с геттерами и/или сеттерами).

2. Классы, реализующие интерфейсы, обязаны предоставить реализацию всех методов и свойств, определенных в интерфейсе.

3. Классы могут реализовывать несколько интерфейсов одновременно, путем разделения их имен запятой.

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

100000R, 12%, 1 year

5. Интерфейсы также могут использоваться для реализации полиморфизма, когда объекты различных классов могут быть использованы через общий интерфейс.

Пример интерфейса:

“`csharp

interface IShape

{

    double CalculateArea();

    void DisplayShape();

}

class Circle : IShape

{

    private double radius;

    public Circle(double radius)

    {

        this.radius = radius;

    }

    public double CalculateArea()

    {

        return Math.PI * radius * radius;

    }

    public void DisplayShape()

    {

        Console.WriteLine($”Circle with radius {radius}”);

    }

}

class Rectangle : IShape

{

    private double width;

    private double height;

    public Rectangle(double width, double height)

    {

        this.width = width;

        this.height = height;

    }

    public double CalculateArea()

    {

        return width * height;

    }

    public void DisplayShape()

    {

        Console.WriteLine($”Rectangle with width {width} and height {height}”);

    }

}

class Program

{

    static void Main()

    {

        IShape circle = new Circle(5);

        IShape rectangle = new Rectangle(4, 6);

        circle.DisplayShape();

        Console.WriteLine($”Area: {circle.CalculateArea()}”);

        rectangle.DisplayShape();

        Console.WriteLine($”Area: {rectangle.CalculateArea()}”);

        Console.WriteLine(“Нажмите любую клавишу для выхода…”);

        Console.ReadKey();

    }

}

“`

В приведенном примере у нас есть интерфейс `IShape`, который определяет два метода: `CalculateArea()` и `DisplayShape()`. Затем у нас есть два класса `Circle` и `Rectangle`, которые реализуют этот интерфейс, предоставляя свои собственные реализации для методов интерфейса.

В методе `Main` мы создаем объекты `Circle` и `Rectangle`, но присваиваем их переменным типа `IShape`. Это позволяет нам вызывать методы интерфейса для объектов, не заботясь о конкретных типах классов. Это демонстрирует гибкость и полиморфизм, предоставляемые интерфейсами.

Интерфейсы являются мощным инструментом в объектно-ориентированном программировании, позволяя создавать чистый код, легко поддерживаемый и расширяемый.


Spread the love

Добавить комментарий