virtual和override实现继承关系

官方文档:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/inheritance

详细信息直接看官方文档,我只记录自己的一点感受。

  1. 子类继承父类时,需要用virtual和override配合。
  2. 子类重载方法中调用父类的该重载源方法,例如:base.method();,如果子类中没有调用,则不会执行父类该源方法的逻辑。

------ 示例 ------

BaseClass.cs

using System;

namespace LearnCSharp
{
    class BaseClass
    {
        public virtual void method()
        {
            Console.WriteLine("我是Base类!");
        }
    }
}

ChildClass.cs

using System;

namespace LearnCSharp
{
    class ChildClass : BaseClass
    {
        public override void method()
        {
            // 调用子类的逻辑
            Console.WriteLine("我是Child类!");

            // 调用父类的逻辑
            base.method();
        }


        static void Main()
        {
            ChildClass childClass = new ChildClass();
            childClass.method();

            Console.ReadKey();
        }
    }
}

控制台输出
控制台输出

隐藏边栏