2010-10-22 1 views
3

Я часто встречаюсь в статьях, описывающих абстрактный класс и интерфейс, что C# не поддерживает множественное наследование, но может быть достигнуто с использованием интерфейсов. Я не согласен с этим по следующим причинам.Может ли множественное наследование быть достигнуто в C# с использованием интерфейсов?

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

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

+0

Мы можем наследовать от интерфейса с другим интерфейсом;) – NOtherDev

+0

Является ли это чисто академическим вопросом или вы сталкиваетесь с проблемой реального мира, которую вы хотели бы решить? –

+0

Есть ли вопрос, или вы просто хотите сказать, что не согласны? –

ответ

1

на самом деле мы никогда не может наследовать от интерфейса

спорно. «Наследование» из интерфейса - это способ его просмотра. Он удовлетворяет принципу подстановки.

Но я согласен с тем, что «реализация» интерфейса является более распространенным выражением/представлением.

3

Нет, вы не можете реализовать множественное наследование в C#, периоде.

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

Но нет, вы не можете получить ту часть, где вы наследуете поведение от нескольких базовых классов.