扩展抽象基类

与接口(可以描述为实现合同)不同,抽象类充当扩展合同。

抽象类无法实例化,必须进行扩展,然后可以实例化生成的类(或派生类)。

抽象类用于提供通用实现

public abstract class Car
{
    public void HonkHorn() {
        // Implementation of horn being honked
    }
}

public class Mustang : Car
{
    // Simply by extending the abstract class Car, the Mustang can HonkHorn()
    // If Car were an interface, the HonkHorn method would need to be included
    // in every class that implemented it.
}

上面的示例显示了任何扩展 Car 的类将如何自动接收带有实现的 HonkHorn 方法。这意味着任何开发新车的开发人员都不需要担心它是如何鸣喇叭的。