C# 多态和接口
2024-09-02 02:24:25
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父类,合适吗?
很显然,不合适!所以我们需要一种规则,那就是接口了,喜鹊,老鹰,飞机,我都实现这个接口,那就可以飞了,而企鹅我不实现这个接口,它就不能飞~~
好,接下来介绍一下接口如何实现多态~
最新文章
- AngularJS指令
- PPT演示快捷键
- hive 搭建
- 2014-2015 ACM-ICPC, NEERC, Moscow Subregional Contest D. Do it Right!
- ASP.NET MVC利用ajax把action的JavaScript注册到页面并执行
- [IOS+PHP Jason格式的发送与解析]
- Java实现UDP之Echo客户端和服务端
- 在Mac中如何显示和隐藏文件
- Beginner’s Guide(开始者向导)
- keyCode 与charCode
- [置顶] a+=1/a=+1/a-=1区别-c语言
- FastCGI中文规范
- 导入java项目时出现红色叹号问题的解决
- Win10常见问题记录
- js的closures(闭包)
- 深度学习中的batch_size,iterations,epochs等概念的理解
- Easyui中 alert 带回调函数的 消息框
- 一起做OJ-环境搭建
- ffmpeg查看音频文件信息
- JS密码校验规则前台验证(不能连续字符(如123、abc)连续3位或3位以上)(不能相同字符(如111、aaa)连续3位或3位以上)