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

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

相关推荐
久绊A5 分钟前
Hydra-SSH 破解安全防范
开发语言·php
阿昭L12 分钟前
c++中获取随机数
开发语言·c++
3壹18 分钟前
数据结构精讲:栈与队列实战指南
c语言·开发语言·数据结构·c++·算法
悟乙己27 分钟前
使用 Python 中的强化学习最大化简单 RAG 性能
开发语言·python·agent·rag·n8n
max50060031 分钟前
图像处理:实现多图点重叠效果
开发语言·图像处理·人工智能·python·深度学习·音视频
RickyWasYoung1 小时前
【代码】matlab-遗传算法工具箱
开发语言·matlab
土了个豆子的3 小时前
03.缓存池
开发语言·前端·缓存·visualstudio·c#
_extraordinary_3 小时前
Java 多线程(一)
java·开发语言
爱喝水的鱼丶3 小时前
SAP-ABAP: ABAP ASSIGN COMPONENT 语句详解:动态字段符号的利器作用用法示例详解
运维·开发语言·sap·abap·开发经验·动态字段符号
励志不掉头发的内向程序员3 小时前
C++进阶——多态
开发语言·c++·学习