何时使用抽象类以及何时在C#中使用接口

When to use abstract classes and when to use interfaces in C#

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

Possible Duplicates:
Abstract classes vs Interfaces
Interface vs Base class

你好,

在C中,什么时候应该使用接口,什么时候应该使用抽象类?请举例说明


抽象类,如果要实现基本功能和一些必须由实现者覆盖的属性/方法:

1
2
3
4
5
6
7
8
public abstract class Entity
{
     public int Id { get; set;}

     public bool IsNew { get { return Id == 0; } }

     public abstract DoSomething(int id); // must be implemented by concrete class
}

接口,如果要定义类必须包含哪些属性/方法,而不实现任何功能:

1
2
3
4
5
public interface IRepository
{
    object Get(int id);
    IEnumerable<object> GetAll();
}


在描述契约时使用接口,在实现将在派生类之间共享的功能时使用抽象类。

使用的例子可以是模板模式和策略模式