На этом шаге мы рассмотрим простейший пример такой реализации.
Если класс реализует несколько интерфейсов, то может сложиться ситуация, когда в нескольких интерфейсах объявлен один и тот же метод, свойство или индексатор. В таком случае в классе, реализующем интерфейсы, достаточно один раз описать соответствующий член. В следующем примере класс реализует два интерфейса, которые содержат объявление одинаковых методов. Код упрощен, чтобы легче было понять суть. Программа представлена ниже.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace pr161_1 { // Первый интерфейс: interface First { void show(); } // Второй интерфейс: interface Second { void show(); } // Класс реализует интерфейсы: class MyClass: First, Second { // Описание метода: public void show() { Console.WriteLine("Объект класса MyClass"); } } // Класс с главным методом: class Program { // Главный метод: static void Main() { // Создание объекта: MyClass obj = new MyClass(); // Ссылка на объект записывается // в интерфейсные переменные: First A = obj; Second B = obj; // Вызовы метода через разные переменные: obj.show(); A.show(); B.show(); // Задержка: Console.ReadLine(); } } }
Ниже представлен результат выполнения программы:
Рис.1. Результат выполнения программы
В программе описаны интерфейсы First и Second, в каждом из которых объявлен метод show() без аргументов, не возвращающий результат. Класс MyClass реализует оба эти интерфейса, но метод show() в классе описан только один раз (при вызове метод выводит сообщение в консоль). В главном методе программы создается объект класса MyClass и в три переменные (объектная obj класса MyClass, интерфейсная A типа First и интерфейсная переменная B типа Second) записывается ссылка на него. Затем через каждую из трех переменных вызывается метод show(). Вполне ожидаемо результат во всех трех случаях один и тот же.
На следующем шаге мы закончим изучение этого вопроса.