Как вы это называете, когда один интерфейс "наследует" от другого?
Если у меня есть класс B: A {}
Я говорю, что "класс B унаследовал класс A" или "класс B происходит от класса A".
Однако, если я вместо этого:
class B : ISomeInterface {}
Неправильно сказать, что "B наследует ISomeInterface" - правильным словом является "B реализует ISomeInterface".
Но, скажем, у меня
interface ISomeInterface : ISomeOtherInterface {}
Теперь все еще неправильно говорить "наследует", но теперь так же неправильно говорить "реализует", поскольку ISomeInterface ничего не реализует.
Итак, как вы это называете?
Ответы
Ответ 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 наследует интерфейс".