跳到主要内容

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

参考答案:

多态性(Polymorphism)是面向对象编程的四大基本特性之一,它允许使用父类类型的变量引用子类对象。当父类引用指向子类对象时,子类对象可以表现出自己的行为,这使得同一个引用在不同情境下有多种形态。在C#中,多态性主要通过方法重写(Override)和虚方法(Virtual Methods)来实现。

1. 方法重写(Override)

当子类继承自父类,并且子类想要改变父类中某个方法的行为时,子类可以重写这个方法。这样,当使用父类类型的变量引用子类对象并调用该方法时,实际上执行的是子类重写后的方法。

1、示例:

using System;

public class Animal
{
    public void MakeSound()
    {
        Console.WriteLine("The animal makes a sound");
    }
}

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

public class Program
{
    public static void Main()
    {
        Animal animal = new Animal();
        animal.MakeSound(); // 输出 "The animal makes a sound"

        Animal dog = new Dog(); // 父类引用指向子类对象
        dog.MakeSound(); // 输出 "The dog barks",多态性体现
    }
}

在上面的示例中,Animal 类有一个 MakeSound 方法,而 Dog 类重写了这个方法。在 Main 方法中,我们创建了一个 Animal 类型的引用 dog,但实际上它指向的是一个 Dog 对象。当我们调用 dog.MakeSound() 时,输出的是 "The dog barks",而不是 "The animal makes a sound"。这就是多态性的体现。

2. 虚方法(Virtual Methods)

在C#中,如果要让子类能够重写父类的方法,父类中的方法必须是虚方法(使用 virtual 关键字)。这样,子类就可以使用 override 关键字来重写这个方法。

2、示例:

using System;

public class Animal
{
    public virtual void MakeSound() // 虚方法
    {
        Console.WriteLine("The animal makes a sound");
    }
}

public class Dog : Animal
{
    public override void MakeSound() // 重写虚方法
    {
        Console.WriteLine("The dog barks");
    }
}

// Main 方法与之前的示例相同

在这个示例中,Animal 类中的 MakeSound 方法被声明为虚方法。这样,Dog 类就可以重写这个方法了。其他部分与之前的示例相同,输出结果也相同。

多态性的好处

多态性允许我们编写更加灵活和可维护的代码。通过多态性,我们可以使用统一的接口来处理不同类型的对象,而不必关心它们的具体类型。这使得代码更加易于扩展和修改。例如,我们可以轻松地添加新的子类并重写虚方法,而不需要修改现有的代码。

学习笔记
|||
说点什么吧
 
100:0
鲤跃网
http://www.sunycode.com
讲文明、要和谐
提交学习笔记