与接口(可以描述为实现合同)不同,抽象类充当扩展的合同。
抽象类无法实例化,必须对其进行扩展,然后可以实例化生成的类(或派生类)。
抽象类用于提供通用实现
public abstract class Car { public void HonkHorn() { // 鸣喇叭的实现 } } public class Mustang : Car { // 只需扩展抽象类Car,Mustang就可以HonkHorn() // 如果Car是接口,则需要包括HonkHorn方法 // 在实现它的每个类中。 }
上面的示例显示了实现Car的任何扩展类如何自动接收HonkHorn方法。这意味着任何开发新汽车的开发人员都无需担心它将如何鸣笛。