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

时间:2010-08-21 20:42:04

标签: c# interface abstract-class

  

可能重复:
  Abstract classes vs Interfaces
  Interface vs Base class

您好,

在C#中我们何时应该使用接口?何时应该使用抽象类? 请用例子说明

2 个答案:

答案 0 :(得分:4)

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

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
}

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

public interface IRepository
{
    object Get(int id);
    IEnumerable<object> GetAll();
}

答案 1 :(得分:0)

当您在描述合同时使用接口,并在您将在派生类之间共享的实施功能时使用抽象类。

使用示例可以是template patternStrategy pattern