如图 1.1,图片较大建议点开观看。

方法重写是指改变继承过来的方法的实现方式。如果一个父类中有一个方法被声明为 virtual,我们就可以在子类中重写它。
public class Shape
{
public virtual Draw()
{
...
}
}
public class Circle : Shape
{
public override void Draw()
{
...
}
}
有了这项技术,我们就可以实现多态了。多态是一种面向对象的技术,它可以让我们不需要书写大量的 switch 条件语句。
Abstract 修饰符表示的是一个类或者成员未被实现。当某些成员不适合在父类中实现时,我们就将它声明为抽象成员。比如说,Shape 类中的 Draw() 函数并不适合在该类中实现,毕竟我们没办法画出一种抽象的形状,因此我们应该留给它的子类(如 Cricle 或者 Rectangle)来实现。
当一个类成员被声明为 abstract 时,该类也必须要被声明为 abstract,因为 abstract 代表了这个类并没有被完成。在其子类中,我们必须要重写父类中的 abstract 方法,否则它也应该被声明为 abstract,并且交给它的子类来实现。
public abstract class Shape
{
public abstract void Draw(); // 不能写函数体
}
public class Circle : Shape
{
public override void Draw()
{
...
}
}
最后,抽象类不可以被实例化,因为它还没有被完成。
如果使用 sealed 修饰一个类,那么这个类不可以被继承。如果用 sealed 来修饰方法,那么这个方法不能被其子类重写,除非使用扩展方法。例如说,string 类已经被 sealed 修饰,所以我们没有办法继承 string 类型。