答案 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 pattern和Strategy pattern