0

0

C#的virtual和override关键字是什么?如何实现多态性?

月夜之吻

月夜之吻

发布时间:2025-11-24 15:33:05

|

185人浏览过

|

来源于php中文网

原创

virtual允许基类方法被重写,override用于派生类中重新实现virtual方法,二者结合实现多态:通过基类引用调用时,实际执行子类重写的方法,如Animal animal=new Dog()调用MakeSound输出“汪汪!”。

c#的virtual和override关键字是什么?如何实现多态性?

在C#中,virtualoverride 关键字用于实现多态性,这是面向对象编程的三大特性之一(封装、继承、多态)。

virtual 关键字的作用

当你在基类中定义一个方法,并希望派生类能够重新实现它的行为时,可以使用 virtual 关键字标记该方法。这表示该方法是“虚拟的”,可以在子类中被重写。

被声明为 virtual 的方法必须有默认实现(不能像抽象方法那样没有实现)。

示例:
public class Animal
{
    public virtual void MakeSound()
    {
        Console.WriteLine("动物发出声音");
    }
}

override 关键字的作用

在派生类中,如果你想修改从基类继承来的 virtual 方法的行为,就需要使用 override 关键字来重写这个方法。

这样做的结果是:当通过基类引用调用该方法时,实际执行的是派生类中的实现,这就是多态性的体现。

FaceHub
FaceHub

免费的在线AI换脸工具网站

下载
示例:
public class Dog : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("汪汪!");
    }
}

public class Cat : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("喵喵!");
    }
}

如何实现多态性

多态性允许你以统一的方式处理不同类型的对象。具体来说,你可以使用基类的引用来指向派生类的对象,并调用被重写的方法,系统会自动执行对应对象的实际类型中的方法。

示例演示多态:
Animal animal1 = new Dog();
Animal animal2 = new Cat();

animal1.MakeSound(); // 输出:汪汪!
animal2.MakeSound(); // 输出:喵喵!

虽然变量类型是 Animal,但实际运行时调用的是 DogCat 类中重写的 MakeSound 方法。这种“运行时决定调用哪个方法”的机制就是多态的核心。

注意:如果基类方法没有标记为 virtual,或者使用了 sealed 等限制修饰符,就不能在派生类中使用 override

基本上就这些。virtual 允许方法被重写,override 实现具体的重写逻辑,两者结合让多态成为可能。

相关专题

更多
go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

54

2025.09.05

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

49

2025.11.27

java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

15

2025.11.27

java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

15

2025.11.27

c++主流开发框架汇总
c++主流开发框架汇总

本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

78

2026.01.09

c++框架学习教程汇总
c++框架学习教程汇总

本专题整合了c++框架学习教程汇总,阅读专题下面的文章了解更多详细内容。

46

2026.01.09

学python好用的网站推荐
学python好用的网站推荐

本专题整合了python学习教程汇总,阅读专题下面的文章了解更多详细内容。

121

2026.01.09

学python网站汇总
学python网站汇总

本专题整合了学python网站汇总,阅读专题下面的文章了解更多详细内容。

12

2026.01.09

python学习网站
python学习网站

本专题整合了python学习相关推荐汇总,阅读专题下面的文章了解更多详细内容。

15

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 8.4万人学习

Vue 教程
Vue 教程

共42课时 | 6.3万人学习

Excel 教程
Excel 教程

共162课时 | 11.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号