2009-10-27 4 views

ответ

6

(Первоначально я думал, что) Вы должны использовать 'inherit' с (не более одной) базой класс. Вы можете использовать «интерфейс» для любых интерфейсов, которые вы собираетесь реализовать.

Так что в случае IDisposable он должен быть «интерфейсом».

EDIT, хорошо компилятор позволяет это сделать, но это может быть ошибкой, я буду смотреть

EDIT: Получается, что это, вероятно, ошибка другого пути, и, вероятно, интерфейсы заставят вас использовать «наследовать» чтобы наследовать другие интерфейсы, идея состоит в том, что члены «унаследованные» всегда видны непосредственно в понятии «неявный интерфейс», тогда как декларация «интерфейса» в классе является «явным» интерфейсом, который требует, чтобы приведение к этому типу интерфейса использовалось тех членов. Так или иначе, мы, вероятно, удалим эту гибкость в синтаксисе языка, чтобы был только один способ автор этого, а не два эквивалентных способа.

+0

Отлично, спасибо Брайан. – Stringer

+0

Имеет смысл. Теперь я лучше понимаю это. Большое спасибо! – Stringer

-1

u должен использовать интерфейсы, если вы собираетесь использовать абстрактные методы. Потому что вы можете наследовать только один класс, но вы можете реализовать множество интерфейсов.

+1

вы не могли бы получить downvotes если вы записываете ваши слова. – recursive

0

Я обычно использую наследование для истинного oop (т. Е. X isa Y) и интерфейсы как своего рода реализация декоратора.

, возможно, не дефакто «правильный» способ сделать это, но нам это очень нравится.

, что я имею в виду, X будет наследовать Y, но тогда мы хотим, чтобы придать ей дополнительную функциональность от V, W и Z.

«Jetta иша автомобиля, но также IDiesel, IGerman, IBroken "

это именно так, как мой текущий проект делает это, и я, вероятно, получить downvoted за„злоупотребление“, OOP или что-то :)

+0

Звучит сумасшедшим. Что делать, если ваш автомобиль реализует как IBroken, так и IWorkingOrder? IToyota и IFord? – Stringer

+0

хорошо, так что это был ужасный пример! :) В действительности, лучшим примером может быть TabControl, в котором есть куча специализированных TabPages. некоторые из них - ITxRx, потому что они имеют определенные типы поведения. другие - другие. безумный дизайн, конечно, но, как ни странно, он работает очень хорошо. –

Смежные вопросы