C#中的多态,抽象类和虚方法的区别(abstract、virtual)

1、首先,解释一下什么叫多态。

多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。

2、在C#中、多态的实现有虚方法、抽象类和接口等。这里讲抽象类和虚方法。

    假设我们有三个类,Base、Son、GrandSon类。Base类是抽象类,其中有抽象方法A和虚方法B。Son类是Base类的子类,GrandSon类是Son类的子类。

    (1)如果对于子类中所有A、B方法都实现了重写(override),那么使用Base类的引用去调用Son、GrandSon的A、B方法,都会使用其重写的A、B方法。

    (2)如果没有都没有进行重写(abstract方法直接子类必须重写),那么哪个引用调用就指向该引用所属对象的方法。


    这里假设Son类重写了A(abstract)方法但没有重写B方法,使用Base类的引用指向GrandSon调用A、B方法时。会调用Son的A方法(因为Son类重写了)和Base类的B方法。

    所以这里可以归纳为,如果使用祖宗类调用儿孙类,儿孙类会从本类开始逐一往上找已重写的方法。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值