接口与多态

多态的出现:为扩展而生!
多态实现形式:通过继承,也可以通过接口
多态实现方法:继承--》父类类型作为方法返回值类型(实际上返回的是一个具体的子类对象)
                                      父类类型作为方法参数类型(实际传递的是具体的子类对象)
                          接口--》接口作为方法的返回值类型(实际上返回是一个接口实现类对象)
                                       接口类型作为方法参数类型(实际上传递的是一个接口实现类对象)
为什么要用接口?
上活:usb接口(上位机会用到很多:网口,串口。。。)
应用:我们可以按照这个规范,去生成需要的设备接口
A:当我们开发一个软件的时候,可能很多时候,我们设计完一个对象后,并不需要马上考虑,或者我们也可能不知道这个对象具体怎么样去编写,我们只是知道的这个对象的行为(也就是知道他干什么,但是不知道怎么干)
还有一种情况,当我们做团队开发的时候,比如一个项目设计了10个模块,由10个小组完成,怎么做到各自做各自的呢?
基于以上的问题,我们可以使用接口解决
第一,我们设计对象后,可以根据行为直接设计接口(接口就是只有方法规定,没有具体实现)
第二,我们可以把相关的模块都抽象成接口,然后接口直接相互协作,最后不同开发组实现不同的模块,这些模块开发完毕后,项目也就自动集成了。
二,接口怎么使用?
通过实例测试:我们想设计一个人作为父类,然后有校长,教师。。。
思考:就是说校长和教师的共同行为,能不能都放到父类中? 比如,校长和教师的演讲,讲课等这些行为,不见得非得放到人这个父类中,因为这些并不是人的共同特性。
父类:人类
校长:--》人类
教师:--》人类
教务:--》人类
后勤:--》人类
思考:如果我们把校长,教师这些演讲,教课的行为都放到人类中,那么请问,当你设计教务,后勤人员类的时候,是不是这些行为自动延续给他们?是的,这样合理?不合理。
怎么办?我们始终要注意,父类一般只放共同的行为,对于部分子类的行为,不能全部放到父类中,因为后面扩展的时候,这些会自动的延续给子类,所以,我们可以把这部分抽象为接口。
然后呢?谁具有这样的行为,谁是实现接口。进行统一的关联。
也就是说接口:侧重的是行为的规范,继承侧重于复用。
1,接口规定:必须以I开头,接口的方法都是没有实现的方法,方法不需要写public.
2,接口可以抽象方法,也可以抽象属性。关键字:interface
3,接口的特点:接口具有强制性,也就是一个类实现一个接口,就必须把接口的所有方法都实现!并且不能改变方法的签名,前面的例子,主要是让大家体会接口在面向抽象编程中的作用,和项目扩展的基本使用。
4,单独添加接口ITeach,然后分别让教务和教师去实现。
三,接口和抽象类的区别
1,接口侧重的是功能的封装,抽象类侧重的是代码的复用,虽然两者都可以实现多态,但是我们在扩展中,如果没有要继承的内容时,请直接使用接口。即使有要继承的内容,我们通常把公共内容放到分类中,然后需要多态的行为,放到接口中。
2,接口更简洁,使用更方便。在框架设计中,抽象的都会变成接口,而不是使用抽象类。
多态的基本原则依据:里氏替换原则。
四,系统接口的使用
接口分类:【1】自定义接口,根据我们实际的项目开发需求,自己写接口
                   【2】系统的接口,也就是.NET平台已经封装好的,可以给我们直接使用的接口。
                    常见的系统接口:IList<T> 当我们讲List时候,有一个对象比较的接口?Icompare<T>
五,接口在设计模式中的应用(重点学习)
六,接口在项目框架中的使用(重点使用)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值