C# 多态

从基类派生类时,派生类将继承基类中除构造函数以外的所有成员,尽管派生类是否能够访问这些成员取决于基类中这些成员的可访问性。C#通过继承实现多态性。基于继承的多态性允许我们在基类中定义方法,并用派生类实现重写它们。

在面向对象编程中,多态性是指实体在运行时引用各种类实例的能力。当程序通过一个超类变量调用一个方法时,将根据存储在超类变量中的引用的类型调用该方法的正确子类版本。根据调用方法的对象的类型,相同的方法名和签名可能会导致发生不同的操作。有助于向系统中添加新类,只需对系统代码进行最小的修改。多态性使程序员能够处理一般性问题,并让执行时环境处理具体问题。程序员可以命令对象以适合于这些对象的方式进行行为,而不知道对象的类型。多态性促进了可扩展性:调用多态行为的软件独立于向其发送消息的对象类型。可以响应现有方法调用的新对象类型可以合并到系统中,而无需修改基本系统。只有实例化新对象的客户机代码才能修改以适应新类型。这是可能的,因为子类对象也是超类对象。从该引用调用方法时,实际引用对象的类型(而不是引用的类型)决定调用哪个方法。子类引用仅当对象为downcast时才可以针对超类对象。

C# 多态示例

class Animal

{

    public Animal()

    {

        Console.WriteLine("Animal constructor");

    }

    public void Greet()

    {

        Console.WriteLine("Animal says Hello");

    }

    public void Talk()

    {

        Console.WriteLine("Animal talk");

    }

    public virtual void Sing()

    {

        Console.WriteLine("Animal song");

    }

};
日期:2020-04-11 22:50:17 来源:oir作者:oir