这篇文章上次修改于 321 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

重写和多态

  • 类的继承

    • 类成员的"横向扩展"(成员越来越多)
    • 类成员的"纵向扩展"(行为改变,版本增高)
    • 类成员的隐藏(不常用)
    • 重写与隐藏的发生条件:函数成员,可见,签名一致
  • 多态(polymorphism)

    • 基于重写机制(virtual->override)
    • 函数成员的具体行为(版本)由对象决定
    • 回顾: C#语言的变量和对象都是有类型的,所以会有"代差"
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;

namespace Learning2
{
    class Program
    {
        static void Main(string[] args)
        {
            Vehicle v = new RaceCar();
            v.Run();
        }

    }

    class Vehicle
    {
        public virtual void Run()
        {
            Console.WriteLine("这是Vehicle的Run");
        }
    }

    class Car : Vehicle
    {
        public override void Run()
        {
            Console.WriteLine("这是Car的Run");
        }
    }

    class RaceCar : Car
    {
        public override void Run()
        {
            Console.WriteLine("Race car is running");
        }
}

}

输出为:

Race car is running

子类可以重写父类的方法,通过使用override和virtual实现重写(版本更新).父类可以通过引用子类实例调用子类的方法,这叫做多态.