Как вы это называете, когда один интерфейс «наследует» другой?
Вопрос
Если у меня есть класс B:А {}
Я говорю, что «Класс Б унаследованный класс А» или «класс Б происходит от класса А».
Однако, если вместо этого у меня есть:
class B : ISomeInterface {}
неправильно говорить «B наследует ISomeInterface» — правильнее сказать «B реализует ISomeInterface».
Но, скажем, у меня есть
interface ISomeInterface : ISomeOtherInterface {}
Говорить «наследует» по-прежнему неправильно, но теперь так же неправильно говорить «реализует», поскольку ISomeInterface ничего не реализует.
Итак, как вы называете эти отношения?
Решение
Я лично говорю «расширяет», и я мысль в спецификации C# где-то тоже используется это слово (к сожалению, сейчас я не могу его найти) - но я помню, как Эрик Липперт сказал, что ему это не нравится, и он хотел изменить его для 4.0.
Я думаю, это хорошо, потому что это показывает, что вы продлеваете контракт, указанный в исходном интерфейсе.
РЕДАКТИРОВАТЬ:Посмотрев спецификацию 3.0...
Спецификация как бы обходит проблему, описанную в разделе 13.2.В нем говорится о том, что члены наследуются от базовых интерфейсов.Речь идет об одном сорт расширение другого, но не интерфейсов
РЕДАКТИРОВАТЬ:В спецификации C# 5, раздел 13.1.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
Почему было бы неправильно говорить, что InterfaceB «наследует» или «происходит от» InterfaceA?«Реализовать» было бы неправильно, потому что InterfaceB не предоставляет реализацию.Семантически создание интерфейсов очень похоже на создание классов.C++, например, вообще не делает различия между интерфейсами и классами.
у вас неправильное определение.
Б:A означает «B наследует от A».
когда мы говорим «B реализует интерфейс A», это обычно означает, что у интерфейса A нет определения функционирования — это только прототипы (или PURE в C++).Однако в C++ и большинстве OOPL наследование и реализация имеют один и тот же синтаксис.
Итак, ИнтерфейсB:Интерфейс A по-прежнему означает «Интерфейс B наследует Интерфейс А».