c#继承与多态使用示例


在C#中,继承和多态是面向对象编程的两个核心概念。以下是一个简单的示例,展示了如何在C#中使用继承和多态。

首先,我们定义一个基类`Animal`,然后创建两个派生类`Dog`和`Cat`,它们继承自`Animal`类。接着,我们通过多态性来演示如何调用基类和派生类的方法。


using System;

// 基类
class Animal
{
    public virtual void Speak()
    {
        Console.WriteLine("This animal makes a sound.");
    }
}

// Dog类继承自Animal类
class Dog : Animal
{
    // 重写基类中的方法
    public override void Speak()
    {
        Console.WriteLine("Woof!");
    }
}

// Cat类继承自Animal类
class Cat : Animal
{
    // 重写基类中的方法
    public override void Speak()
    {
        Console.WriteLine("Meow!");
    }
}

class Program
{
    static void Main(string[] args)
    {
        // 创建Animal类型的变量,但实际指向Dog和Cat的实例
        Animal myDog = new Dog();
        Animal myCat = new Cat();

        // 调用Speak方法,展示多态性
        myDog.Speak();  // 输出: Woof!
        myCat.Speak();  // 输出: Meow!

        // 由于myDog和myCat在编译时类型都是Animal,但运行时类型是Dog和Cat,
        // 因此调用的是各自类中重写后的Speak方法,这体现了多态性。
    }
}

在这个例子中,`Animal`类定义了一个虚方法`Speak()`,它在基类中的实现仅打印了一条通用的消息。然后,`Dog`和`Cat`类分别重写了这个方法,以打印出各自的叫声。在`Main`方法中,我们创建了`Dog`和`Cat`的实例,但将它们赋给了`Animal`类型的变量。当调用这些变量的`Speak()`方法时,根据对象的实际类型(即运行时类型),将调用相应类中的`Speak()`方法,这体现了多态性的特性。