抽象类优于接口的优点

log*_*eks 4 c#

我从MSDN文章中得到以下声明.它说抽象类比接口有优势,因为可以改变抽象类来添加新成员.不改变抽象类真的会使从它继承的类不稳定吗?或者任何人都可以解释一下他们的观点是什么?

支持在接口上定义类.

在库的更高版本中,您可以安全地向类添加新成员; 您不能在不破坏现有代码的情况下向接口添加成员.

rer*_*run 6

假设你有一个界面

public interface Animal 
{
     void Sleep();
}
Run Code Online (Sandbox Code Playgroud)

你发布你的库,你发现你需要添加一个属性到界面.

public interface Animal 
{
     int Age{get;set;}
     void Sleep();
}
Run Code Online (Sandbox Code Playgroud)

每个人对第一个版本的接口编写的所有代码都不再编译强制升级.如果您使用此抽象类发布了第一个版本.

public abstract class Animal 
{
    public abstract  void Sleep();
} 
Run Code Online (Sandbox Code Playgroud)

现在您需要添加另一个属性

public abstract class Animal
{
    public virtual int Age{get;set;}
    public abstract  void Sleep();
} 
Run Code Online (Sandbox Code Playgroud)

在这种情况下,用户无需更改代码.