Значение интерфейсов C # - PullRequest
       25

Значение интерфейсов C #

10 голосов
/ 08 февраля 2010

Хотелось бы узнать о значительном использовании интерфейса. Я прочитал много статей, но не совсем понял концепцию интерфейса.

Я написал небольшую программу. Я определил интерфейс Itest.Class(Manager) реализовал Interface.Another class(Employee) не реализовал интерфейс. Но определен тот же метод (DoSomething()) в интерфейсе в классе (Employee). Я могу вызвать метод из объекта класса. Тогда почему я должен пойти и реализовать интерфейс. Я могу напрямую реализовать метод в классе и вызвать метод. Почему я должен пойти на дополнительный шаг реализации метода в интерфейсе, а затем наследовать интерфейс по классу. Я знаю, что интерфейс поддерживает множественное наследование, но в этом примере я не использую множественное наследование.

Спасибо за любые идеи или вклад.

public interface Itest
{
    void DoSomething();
}

public class Manager:Itest
{
    public void DoSomething()
    {
        Console.WriteLine("test....");
    }

}
class Employee
{
    public void DoSomething()
    {
        Console.WriteLine("test....");
    }
}

class Program
{
    static void Main(string[] args)
    {
        Manager m = new Manager();
        m.DoSomething();
        Employee e = new Employee();
        e.DoSomething();
        Console.ReadLine();
    }
}

Ответы [ 12 ]

0 голосов
/ 08 февраля 2010

Полагаю, вы хотите очень простой ответ.

Существует 2 типа наследования:

  • ТИП 1: наследование интерфейса (в простые термины: когда снаружи класс наследуется)
  • ТИП 2: наследование реализации (когда внутри класса наследуется)

Если вы напишите

class MyClass : Base {}

вы используете ОБА типа 1 и 2. Но если вы реализуете интерфейс, это ясно, типа 1.

Тип 1 для полиморфного использования, а тип 2 для повторного использования кода.

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

  • не хочу предоставлять осуществление
  • или просто не могу этого сделать. В основном в случае множественного наследования - примечание: c ++ позволяет это, это следует другой философии

интерфейсы для вас:)

Есть и другие способы использования (например, принудительная реализация метода), но, на мой взгляд, в этом суть.

0 голосов
/ 08 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...