C#中的多态性

本文介绍了多态性的概念,它是不同对象响应相同消息时表现出的不同行为。C#支持编译时和运行时两种多态性,前者通过方法重载和操作符重载,后者通过虚函数的覆写实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、多态的概念

多态性是指不同对象收到相同消息时会产生不同动作。在C#中,多态性通过派生类覆写基类中的虚函数型方法来实现。基类的方法要加上关键字 virtual 后变成虚方法,才可以被重写,从而实现面向对象最重要的特征——多态性,即基类可以使用派生类的方法。

二、C#支持两种多态性

(一)编译时的多态性

通过方法重载和操作符重载来实现。

(二)运行时的多态性

系统直到运行时才根据实际情况决定采用何种操作。

三、案例

    class BaseClass
    {
        public virtual void Method()
        {
            Console.WriteLine("Base-Method");
        }
    }
    class DerivedClass : BaseClass
    {
        public override void Method()
        {
            Console.WriteLine("Derived-Method");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            BaseClass bc = new BaseClass();
            DerivedClass dc = new DerivedClass();
            //bcdc类型为BaseClass,且其值的类型为DerivedClass。
            BaseClass bcdc = new DerivedClass();
            //调用基类中的虚方法
            bc.Method();    //Base-Method
            //调用派生类中重写后的方法
            dc.Method();    //Derived-Method
            //此处实现多态,通过基类变量调用派生类中的方法
            bcdc.Method();  //Derived-Method
            //此处实现多态,将派生类型的变量赋值给基本类型的变量
            bc = dc;
            bc.Method();    //Derived-Method
            Console.ReadLine();
        }
    }

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值