Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Освоение интерфейсов в C#: определение, реализация и практические примеры

Интерфейсы в C#: подробное руководство

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

Что такое интерфейс в C#?

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

interface IPolygon { void CalculateArea(); }

Реализация интерфейса

Для использования интерфейса класс должен реализовать его, предоставляя конкретные определения для всех его членов. Используется синтаксис с двоеточием (:), как при наследовании.

using System;
namespace CsharpInterface {
    interface IPolygon {
        void CalculateArea(int length, int breadth);
    }
    class Rectangle : IPolygon {
        public void CalculateArea(int length, int breadth) {
            int area = length * breadth;
            Console.WriteLine($"Площадь прямоугольника: {area}");
        }
    }
    class Program {
        static void Main(string[] args) {
            Rectangle rect = new Rectangle();
            rect.CalculateArea(100, 200);
        }
    }
}

Результат

Площадь прямоугольника: 20000

Реализация нескольких интерфейсов

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

using System;
namespace CsharpInterface {
    interface IPolygon {
        void CalculateArea(int a, int b);
    }
    interface IColor {
        void GetColor();
    }
    class Rectangle : IPolygon, IColor {
        public void CalculateArea(int a, int b) {
            int area = a * b;
            Console.WriteLine($"Площадь прямоугольника: {area}");
        }
        public void GetColor() {
            Console.WriteLine("Красный прямоугольник");
        }
    }
    class Program {
        static void Main(string[] args) {
            Rectangle r = new Rectangle();
            r.CalculateArea(100, 200);
            r.GetColor();
        }
    }
}

Результат

Площадь прямоугольника: 20000 Красный прямоугольник

Использование ссылки интерфейса

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

using System;
namespace CsharpInterface {
    interface IPolygon {
        void CalculateArea(int length, int breadth);
    }
    class Rectangle : IPolygon {
        public void CalculateArea(int length, int breadth) {
            int area = length * breadth;
            Console.WriteLine($"Площадь прямоугольника: {area}");
        }
    }
    class Program {
        static void Main(string[] args) {
            IPolygon poly = new Rectangle();
            poly.CalculateArea(100, 200);
        }
    }
}

Результат

Площадь прямоугольника: 20000

Практический пример: полиморфный расчет площадей фигур

Ниже мы определяем интерфейс IPolygon и две конкретные фигуры, которые его реализуют. Каждая фигура независимо вычисляет свою площадь.

using System;
namespace CsharpInterface {
    interface IPolygon {
        void CalculateArea();
    }
    class Rectangle : IPolygon {
        public void CalculateArea() {
            int length = 30;
            int breadth = 90;
            int area = length * breadth;
            Console.WriteLine($"Площадь прямоугольника: {area}");
        }
    }
    class Square : IPolygon {
        public void CalculateArea() {
            int side = 30;
            int area = side * side;
            Console.WriteLine($"Площадь квадрата: {area}");
        }
    }
    class Program {
        static void Main(string[] args) {
            Rectangle rect = new Rectangle();
            rect.CalculateArea();
            Square sq = new Square();
            sq.CalculateArea();
        }
    }
}

Результат

Площадь прямоугольника: 2700 Площадь квадрата: 900

Зачем использовать интерфейсы в C#?

Язык C

  1. Работа с интерфейсом командной строки в SPICE
  2. Интерфейсы в Java: концепции, реализация и лучшие практики
  3. Java Collections Framework: основные интерфейсы, реализации и практическое использование
  4. Интерфейс Collection в Java: основные концепции и ключевые методы
  5. Освоение интерфейса NavigableSet в Java: навигация, сортировка и практические примеры
  6. Освоение Java Lambda-выражений: от основ к Stream API
  7. Надежный беспроводной датчик подъездной дороги для длинных подъездов — простое подключение к Raspberry Pi
  8. Интерфейсы в Java: определение, использование и лучшие практики
  9. Java 9 Private Interface Methods: инкапсуляция и повторное использование кода
  10. Интерфейсы в C#: контракты для надежного ООП