C#面:详细举例阐述什么是多态性?

多态性是面向对象编程中的一个重要概念,它允许一个对象可以以多种不同的方式工作。在C#中,多态性通过虚函数来实现。

举个例子来说明多态性的概念。假设我们有一个基类Animal,它有一个虚方法MakeSound(),并有两个派生类Dog和Cat,它们分别重写了MakeSound()方法。

cs 复制代码
class Animal
{
    public virtual void MakeSound()
    {
        Console.WriteLine("Animal makes a sound");
    }
}

class Dog : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Dog barks");
    }
}

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

现在我们可以创建Animal、Dog和Cat的对象,并调用它们的MakeSound()方法:

cs 复制代码
Animal animal = new Animal();
Dog dog = new Dog();
Cat cat = new Cat();

animal.MakeSound();  // 输出:Animal makes a sound
dog.MakeSound();     // 输出:Dog barks
cat.MakeSound();     // 输出:Cat meows

在这个例子中,animal、dog和cat都是Animal类型的对象,但是它们调用MakeSound()方法时表现出不同的行为。这就是多态性的体现,同一个方法在不同的对象上表现出不同的行为。

需要注意的是,为了实现多态性,我们需要将基类的方法声明为虚方法(使用关键字),并在派生类中使用关键字重写基类的方法。这样,当我们通过基类的引用调用虚方法时,实际上会根据对象的实际类型来确定调用哪个重写的方法。

相关推荐
Jeff-Tsai18 分钟前
Day 9:数据与定义分家,表单不必各自建类型
.net·架构设计·erp·definition-driven
熊猫钓鱼>_>22 分钟前
三方库 NDK 原生模块跨平台适配与调试【鸿蒙心迹】
开发语言·华为·ai编程·harmonyos·鸿蒙·openharmony·鸿蒙心迹
步步为营DotNet23 分钟前
.NET 可观测性选型:Metrics、ActivitySource、EventSource 到底该用哪个
c#·.net·metrics·可观测性
HANDY0920028 分钟前
从“不照人”到“剂量达标”:扇叶遮挡式UV-C空气消毒的工程边界与可验证评估框架
开发语言·人工智能·嵌入式硬件·智能家居
CSharp精选营1 小时前
我把 Ant Design Blazor 翻了一遍:Blazor 中后台组件库到底能不能用
.net·blazor·ant design blazor·中后台系统·mudblazor
IT规划师1 小时前
Redis 数据类型全解 - ZSet:两个编码,七种玩法(五)
redis·.net
1024奇点10 小时前
【仓颉语言入门 · 第二篇 第 22 课】
开发语言·ide·开源
Warren2Lynch10 小时前
C4 模型详解:利用 Visual Paradigm 可视化软件架构的综合指南
开发语言·uml
Knight_AL11 小时前
Java 文件下载时文件名中的 `#` 被转换成 `%23`?一次 URL 编码与解码问题排查
java·开发语言
FRing0312 小时前
vue2干货总结2(v-bind、v-for、v-model、指令修饰符、v-bind操作class和style)
开发语言·前端·vue.js·vue2