跳转至

虚方法(Virtual Method)#

来源:D:\study\C#1\stu0727\虚方法

虚方法定义在普通类中,允许子类通过 override 重写其行为。与抽象方法不同,虚方法有默认实现,子类可以不重写(此时使用父类的默认实现)。

基本语法#

class People
{
    public string Name { get; set; }

    // virtual 关键字:声明为虚方法,有默认实现
    public virtual void Speak()
    {
        Console.WriteLine("打招呼");
    }
}

class Man : People
{
    // override 重写虚方法
    public override void Speak()
    {
        Console.WriteLine("吃了没");
    }
}

使用:

new People().Speak();  // → "打招呼"  (使用父类默认实现)
new Man().Speak();     // → "吃了没"    (使用子类重写实现)

抽象方法 vs 虚方法#

对比 抽象方法 虚方法
所在类 只能在抽象类中 可以在普通类中
方法体 ❌ 没有(必须被子类实现) ✅ 有(子类可以不重写)
子类必须实现 ✅ 必须 override ❌ 可选
修饰符限制 不能是 private 可以是任意访问修饰符

共同点:抽象方法和虚方法都是实现运行时多态(动态多态)的机制——在程序运行期间才决定调用哪个版本的方法。



相关笔记#