我从MSDN文章中得到以下声明.它说抽象类比接口有优势,因为可以改变抽象类来添加新成员.不改变抽象类真的会使从它继承的类不稳定吗?或者任何人都可以解释一下他们的观点是什么?
支持在接口上定义类.
在库的更高版本中,您可以安全地向类添加新成员; 您不能在不破坏现有代码的情况下向接口添加成员.
假设你有一个界面
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)
在这种情况下,用户无需更改代码.