C#入门详解

##重写和多态
在这里插入图片描述
现在构成的不是override重写,要重写的话,要在父类成员标记上virtual,子类成员标记上override才行。
在这里插入图片描述
在这里插入图片描述
运行后是Car is running
在这里插入图片描述
此时是I‘m running
调用过哪个版本的方法是与实例相关联的版本

如果不加virtual和override叫做子类对父类成员的隐藏,此时子类的run方法会覆盖父类的方法。
在这里插入图片描述
此时是Car is running
v变量虽然是vehicle类型,但它引用的版本是car类型的实例,与car类型的实例相关联的版本是car isrunning
在这里插入图片描述
父类的变量引用一个子类的实例,调用被重写的成员的时候,总能调用到一个最新的版本,这就叫多态。
在这里插入图片描述
将raseccar中的override去掉,此时应该打印出 car is running
v变量虽然是vehicle类型,但它引用的版本是Rasecar类型的实例,与Rasecar类型的实例相关联的最新版本是car is running(Rasecar相当于都两个run方法,一个是继承下来的,一个自己写的。v调用时是顺着继承链往下调用的,到car就停了)
在这里插入图片描述
如果想调用rasecar中的在最新版本,必须声明rasecar类型变量
在这里插入图片描述

重写和多态一般用在方法和属性的重写中。
重写属性:
在这里插入图片描述
car类中对speed属性的重写
在这里插入图片描述
重写发生的条件:
必须是函数成员
public 和protected时对子类是可见的,此时可以重写
签名一致:参数名和列表一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值