深入.net(多态一)
Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
代码优化技术:
当您在 编写一个类时,如果您发现你需要编写的“属性”和“方法”曾经在已有的类中实现,则,您可以将其共用的“属性”和“方法”剪切到一个新的“类”中,然后,让两个类共同继承这个“新类”。(使用 :,体现继承关系)
此时,被继承类我们称为“父类”(基类),继承父类的类,我们称为“子类”(派生类)。所有的子类拥有父类所有对外公开的属性和方法,同时可以使用父类protected的资源。因此,我们完全可以说:“子类完全可以替换父类” ----- 里氏替换原则!
当一个子类“替换”父类时:
1、只能看到父类的“方法列表”,而无法看到和使用子类自己的“新方法”
2、如果要使用其替换子类的“新方法”:
步骤一:先识别 ( is ) if (item is Teacher){}
步骤二:再转换
类型强行转换 ----(Teacher)item
as 进行转换 ---item as Student
---- 两种转换方式的区别:类型强制转换,如果转换失败,抛出异常!
而使用 as 进行类型转换,转换失败,不会抛出异常,转换结果为NULL。
3、当子类与父类,同时拥有“同签名的方法”(方法名相同、参数列表相同、返回类型相同)有如下几种情况:
父类 |
子类 |
表现出的结果 |
方法无改变 |
方法前New(可省略) |
执行父类的方法 |
virtual 修饰方法 |
方法前New(可省略) |
执行父类的方法 |
virtual 修饰方法 |
override修饰方法 |
子类的方法 |
方法无改变 |
override修饰方法 |
编译错误(override必须成对出现) |
4、多态 ----- 相同的“方法调用”,却得到不同的“业务响应”;
应用场景:当对象的创建代码经常发生改变时(新的子类不断出现,新的业务实现不断的出现),会导致关联业务(使用子类的地方)频繁发生变化!此时,您可以考虑将创建对象的代码,统一放置到一个类中(工厂类),这样有新的子类诞生时,只需要修改工厂类的“创建方法”【简单工厂设计模式】
出发点:
上一个项目写的代码,后续的项目要能继续使用; ---- 可复用【继承】
项目做完后,要新功能时,最好只做少量改动,不影响原有功能; ---- 可扩展
项目做完后,需求变化时,能快速修改,且少改动、还要稳定; ---- 可维护
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。