2011-02-10 2 views
0

Возможные Дубликаты:
interface and abstract class.
Abstract classes vs Interfacesкогда использовать абстрактный класс и когда использовать интерфейс в C#

Может кто-нибудь сказать мне, когда нужно использовать абстрактный класс и когда один должен использовать интерфейс с образцами сценариев?

+0

См. Http://stackoverflow.com/questions/1474249/abstract-classes-vs-interfaces –

+0

Здесь много дубликатов. Например, http://stackoverflow.com/questions/2987253/interface-vs-abstract-class. –

ответ

3

Если вы определяете поведение (как IEnumerable, так как List действует как IEnumerable), а затем использовать интерфейс, но если вы определяете вид из объекта (IS-A) отношения, используйте абстрактный класс (например, Stream - с MemoryStream IS-A Stream).

3

Вы должны использовать абстрактный класс, если вам нужно предоставить базовую реализацию.

В противном случае используйте интерфейс.

+0

в любом случае, это прямой ответ. –

2

Если вы хотите обеспечить реализацию метода/набора методов, но не хотите, чтобы люди напрямую инстанцировали ваш родительский класс, используйте абстрактный класс.

Если вы хотите определить, какие члены класса должны взаимодействовать, но не предоставлять какую-либо реализацию, используйте интерфейс.

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