用实例说明多态总结

多态

书接上回 ,再次优化,新增需求后,没有对现有对象的功能调整,只是对新增对象的添加。这样的实现,进一步体现了开发中多态的价值。从面向对象的角度,根据实现的方式我们可以进一步分为基类继承式多态和接口实现是多态。

基类继承式多态

基类继承式多态的关键式继承设计与实现,在File类作为所有资料类型的基类,然后根据需求逐层设计。在客户端调用时,多态是以这种方式体现的:

Files myFile= new WORDFile();
myFile.Open();

myFile是父类Files的一个变量,保持了指向子类WORDFile实例的引用,然后调用虚方法Open,而调用是在运行时,而非编译时。这样方式体现了IS-A的关系。IS:WORDFile,A:Files。

接口实现式多态

除了基类继承式,接口实现式多态具有更高的灵活性。从设计模式角度来看,接口实现多态体现了一种CAN-DO 关系。在客户端调用,多态以这种方式体现:

IFileOpen myFile = new WORDFile();
myFile.Open();
多态的运行机制

从技术实现角度来看,是.NET 的动态绑定机制成就了面向对象的多态特性。动态绑定,又叫做晚期绑定,区别于静态绑定。静态绑定在编译期就可以关联,一般是以方法重载来实现;动态绑定则是在运行期通过检查虚拟方法表来确定动态关联覆写的方法,一般以继承和虚拟方法来实现。在.NET中,虚方法以virtual关键字来标记, 在子类中覆写的方法以override来标记。通常将子类中共有却容易发生变化的特性抽取为虚函数在父类中定义,而在子类中覆写来重新实现其操作。

多态的规则和意义

1、多态提供了对同一类对象的差异化处理方式,实现了对变化和共性的有效封装和继承,体现了“一个接口,多种方法”的思想,使方法抽象机制成为可能。
2、在.NET 中,默认情况下方法是非虚的,以 C#为例必须显式地通过 virtual 或者 abstract 标记为虚方法或者抽象方法,以便在子类中覆写父类方法。
3、在面向对象的基本要素中,多态和继承、多态和重载存在紧密的联系,正如前文所述多态的基础就是建立有效的继承体系,因此继承和重载是多态的实现基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值