Описание отношений между интерфейсами - PullRequest
3 голосов
/ 25 марта 2011

Рассмотрим этот интерфейс в FCL:

public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable

Он говорит нам: интерфейс IList<T> [XXX] 3 интерфейса: IConnection<T>, IEnumerable<T> и IEnumerable.У меня есть несколько вариантов для [XXX]:

(1) происходит от / наследует

Эта опция происходит из спецификации языка C # (но не напрямую), где слово «интерфейсы множественного наследования»появляется несколько раз.Причина, по которой мне это не нравится: используя слово «наследовать», мы имеем: IEnumerable<T> наследует IEnumerable, ICollection<T> наследует оба IEnumerable<T> и IEnumerable, затем IList<T> наследует все три.Что-то не так, но я не могу сказать, очень плохие чувства.

(2) реализует

Это тоже не хороший вариант.Поскольку реализации нет, это только контракт.

(3) что-то еще?Я хотел бы знать

Какова ваша идея?

Ответы [ 3 ]

3 голосов
/ 25 марта 2011

Я использовал «Расширяет» для этого.Может быть, немного Java-иш, но это кажется мне подходящим.Можно сказать, что интерфейс с суперинтерфейсом «расширяет» этот интерфейс, потому что он должен что-то добавить к нему (не обязательно или конечно, но причин для этого не так уж много.все еще расширяется семантически).

2 голосов
/ 25 марта 2011

Я бы сказал, IList<T> включает ICollection<T>, IEnumerable<T> и IEnumerable

В качестве альтернативы я мог бы сказать, что расширяет

0 голосов
/ 25 марта 2011

Я бы сказал, что интерфейс реализован, а класс унаследован . Это то, что вы спрашиваете?

Если да, вот почему:

  • Интерфейс описывает контракт, который объекты, использующие этот контракт, должны реализовать . Если интерфейс основан на другом интерфейсе, я бы сказал, что он «расширяется» или «является производным от» этого интерфейса. Если это класс, то он реализует интерфейс.
  • Класс предоставляет функциональность для других объектов , наследует и расширяет.

Причина, по которой я не использую «наследует», описывает обе ситуации, потому что вы ничего не наследуете от интерфейса, например, В интерфейсе нет функциональной субстанции - только план того, что будет делать конкретный объект.

...