博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 多态和接口
阅读量:7199 次
发布时间:2019-06-29

本文共 713 字,大约阅读时间需要 2 分钟。

1多态可以有属性,接口只有方法

2关键字不同,多态有静态多态(abstract)和动态多态(virtual),静态多态不能new()出自己,动态多态可以;多态中可以有自己的方法可设置不需要子类重写,接口则否,

3.基于上述两点发现,多态比接口更宽松,但有时由于接口的单一使得很使用明确,别人用起来很方便.多态显得太庞大.

根本不需要查看源代码是如何实现的,这就是多态的好处.

 

可以看 https://www.cnblogs.com/wl-blog/p/10361894.html 讲的什么时候用接口

我要问一个问题,喜鹊和老鹰都可以飞,这个飞的能力,我怎么来实现呢?

XXX答:“在父类Bird中添加一个Fly方法不就好了~~”

我再问:“好的,照你说的,企鹅继承父类Bird,但是不能企鹅不能飞啊,这样在父类Bird中添加Fly方法是不是不合适呢?”

XXX答:“那就在能飞的鸟类中分别添加Fly方法不就可以了吗?”

对,这样是可以,功能完全可以实现,可是这样违背了面向对象开放封闭原则,下次我要再扩展一个鸟类比如猫头鹰(Owl),我还要去源代码中看下Fly是怎么实现的,然后在Owl中再次添加Fly方法,相同的功能,重复的代码,这样是不合理的,程序也不便于扩展;

其次,如果我还要添加一个飞机类(Plane),我继承Bird父类,合适吗?

很显然,不合适!所以我们需要一种规则,那就是接口了,喜鹊,老鹰,飞机,我都实现这个接口,那就可以飞了,而企鹅我不实现这个接口,它就不能飞~~

好,接下来介绍一下接口如何实现多态~

 

转载于:https://www.cnblogs.com/wl-blog/p/10370430.html

你可能感兴趣的文章
关于IPad,Iphone“无法加入网络”的可能出现的问题解决办法
查看>>
65 个职场很有技巧的回答
查看>>
学习记录:go语言中读写文件的小练习
查看>>
【技术解析】如何用Docker实现SequoiaDB集群的快速部署
查看>>
VMware ESXi 虚拟硬盘的格式:精简置备、厚置备延迟置零、厚置备置零
查看>>
XenDesktop SQL Server Mirror事务日志维护
查看>>
关于jdbc的模块化和事务处理
查看>>
vim python 自动补齐
查看>>
Python标准库06 子进程 (subprocess包)
查看>>
SQL中修改表的所有者
查看>>
JFinal源码解析系列之三
查看>>
GetByteArrayElements和ReleaseByteArrayElements
查看>>
《阿勇java建站教程》1.2java建站
查看>>
交换机cpu负载90%以上(二)【新任帮主】
查看>>
thinkphp---初始化
查看>>
对一些顽固病毒的杀毒技术
查看>>
使用JDBC连接数据库的改进做法
查看>>
xcode快速生成注释之VVDocumenter
查看>>
iOS设置模式之单例
查看>>
[Windows Azure]The Autoscaling Application Block
查看>>