关于OOP:何时使用抽象类以及何时在C#中使用接口

when to use abstract class and when to use interface in c#

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicates:
interface and abstract class.
Abstract classes vs Interfaces

有人能告诉我什么时候应该使用抽象类,什么时候应该使用带有示例场景的接口吗?


如果要定义行为(如IEnumerable,因为List的行为类似于IEnumerable),那么使用接口,但是如果要定义一种对象(即IS-A)关系,则使用抽象类(如Stream,因为MemoryStreamStream)。


如果需要提供基本实现,则应使用抽象类。

否则,请使用接口。


当您希望提供方法/方法集的实现,但不希望人们直接实例化父类时,请使用抽象类。

如果要定义类必须接口的成员,但不提供任何实现,请使用接口。