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()方法时表现出不同的行为。这就是多态性的体现,同一个方法在不同的对象上表现出不同的行为。

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

相关推荐
wearegogog1233 分钟前
C语言中的输入输出函数:构建程序交互的基石
c语言·开发语言·交互
Fine姐6 分钟前
The Network Link Layer: 无线传感器中Delay Tolerant Networks – DTNs 延迟容忍网络
开发语言·网络·php·硬件架构
HAPPY酷24 分钟前
给纯小白的Python操作 PDF 笔记
开发语言·python·pdf
liulilittle32 分钟前
BFS寻路算法解析与实现
开发语言·c++·算法·宽度优先·寻路算法·寻路
阿珊和她的猫1 小时前
autofit.js: 自动调整HTML元素大小的JavaScript库
开发语言·javascript·html
喜欢吃燃面1 小时前
C++算法竞赛:位运算
开发语言·c++·学习·算法
草莓熊Lotso1 小时前
《详解 C++ Date 类的设计与实现:从运算符重载到功能测试》
开发语言·c++·经验分享·笔记·其他
谱写秋天1 小时前
Qt 5.5 的安装与配置(使用 VSCode编辑)
开发语言·vscode·qt
唐青枫1 小时前
别滥用 Task.Run:C# 异步并发实操指南
c#·.net