Re[2]: Зачем нужно наследование интерфейсов?
От: Воронков Василий Россия  
Дата: 06.07.12 20:06
Оценка: -1
Здравствуйте, DarkGray, Вы писали:

DG>в mainstream-языках это дает возможность статически проверять типы при возвращении интерфейса

DG>если интерфейсы отнаследованы друг от друга
DG>
DG>interface IEnumerable{ void Foo();}
DG>interface ICollection:IEnumerable{void Bar();}
DG>

DG>то функция возвращая ICollection, предоставит статически проверяемую возможность обратиться как к методам ICollection, так и к методам IEnumerable
DG>
DG>ICollection GetItems(){..}
DG>var items = GetItems();
DG>items.Foo();
DG>items.Bar();
DG>

DG>если же интерфейсы независимы
DG>
DG>interface IEnumerable{ void Foo();}
DG>interface ICollection{void Bar();}
DG>

DG>то функция сможет вернуть только или IEnumerable, или ICollection, и придется явно кастить, чтобы получить доступ к другому интерфейсу

Что в этих мейнстрим языках уже решается через генерики

Нет, я понимаю, что "интерфейсы здесь были раньше". Т.е. если причины чисто исторические — ОК, такой ответ принимается. Вопрос, есть ли какие другие причины, кроме "а раньше мы по-другому не умели".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.