Подтвердить что ты не робот

Как вы это называете, когда один интерфейс "наследует" от другого?

Если у меня есть     класс B: A {}

Я говорю, что "класс B унаследовал класс A" или "класс B происходит от класса A".

Однако, если я вместо этого:

  class B : ISomeInterface   {}

Неправильно сказать, что "B наследует ISomeInterface" - правильным словом является "B реализует ISomeInterface".

Но, скажем, у меня

  interface ISomeInterface : ISomeOtherInterface   {}

Теперь все еще неправильно говорить "наследует", но теперь так же неправильно говорить "реализует", поскольку ISomeInterface ничего не реализует.

Итак, как вы это называете?

4b9b3361

Ответ 1

Я лично говорю "extends", и я подумал, что С# spec тоже использует это слово (я не могу найти его сейчас, к сожалению), но я помню, как Эрик Липпер сказал, что он не увлекается этим, и хотел измените его на 4.0.

Я думаю, что это хорошо, потому что это показывает, что вы расширяете контракт, указанный исходным интерфейсом.

EDIT: просмотрев спецификацию 3.0...

Специфический вид побочных действий в разделе 13.2. В нем говорится о том, что члены наследуются от базовых интерфейсов. Он говорит о том, что один класс расширяет другой, но не интерфейсы

EDIT: В спецификации С# 5, раздел 13.1.4, он использует наследует:

Интерфейс может наследовать от нуля или более типов интерфейсов

Так что, вероятно, лучший термин для использования.

Ответ 2

Я называю это "extends".

Ответ 3

Обычно я называю это overengineering.

Ответ 4

Как авторитетный источник, и если вам нужна полезная цитата, я наткнулся на информацию в MSDN, которая описывает " наследование интерфейса" с практическим примером структуры наследования интерфейса для ComboBox, Control, Listbox и TextBox:

И с упоминанием явного базового интерфейса

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

Пример:

interface IControl
{
   void Paint();
}
interface ITextBox: IControl
{
   void SetText(string text);
}
interface IListBox: IControl
{
   void SetItems(string[] items);
}
interface IComboBox: ITextBox, IListBox {}

Источник:

http://msdn.microsoft.com/en-us/library/aa664578%28VS.71%29.aspx

Ответ 5

Почему было бы неправильно говорить, что интерфейс "наследует" или "происходит от" InterfaceA? "Реализации" будет неправильным, потому что InterfaceB не обеспечивает реализацию. Семантически, вывод интерфейсов очень похож на получение классов. С++, например, вообще не различает интерфейсы и классы.

Ответ 6

у вас неправильное определение.

B: A означает, что B наследуется от A.

когда мы говорим, что "B реализует интерфейс", что обычно означает, что InterfaceA не имеет функции определения - это только прототипы (или PURE на С++). Однако в С++ и большинстве OOPL наследование и реализация имеют одинаковый синтаксис.

Итак, InterfaceB: InterfaceA по-прежнему означает, что "интерфейсB наследует интерфейс".