- 是这样,楼主本人刚学Java的时候,看到抽象类与接口,感觉很不理解,时常为两者的业务场景纠缠不清.
- 后来在网上百度,七嘴八舌,要么只是说一些语法上的不同,要么就是提一些不痛不痒的例子,比如什么学生类,老师类实现人的某项功能balabala...
- 其实我个人觉得刚开始还是从代码层面上说话更能让人理解。
- 关于抽象类,在实际应用中我更喜欢把它当做“模板”来使用,抽象类的好处就是,一半事情,父类替你做了,OK,子类直接调取;另一半事情留给子类自己去实现,相比较于接口,它的子类不太适合作为一个参数进行传递。
- 关于接口,什么称呼都有。。。
- 我个人理解的接口是这样:
- 提高某个数据类更“灵活”,如果把抽象类的继承关系比作垂直,那么接口就相当于把这个数据类型在水平方向进行延展;
- 可以直接使用此匿名实例,或者用句柄接收此实例作为参数进入方法栈;
- 使某个两或者多个个平行关系的实现类产生关联;
- 解耦,这意味着啥,通过接口,可以减少重复代码,越是越大的项目越是能体现出接口的威力。
- 关于接口的嵌套,这个情况有,但是不多,楼主也只是在为数不多项目里发现过一次。
- 抽象类与接口各有各的好处,反正没啥不能new的,还是看需求走向,与业务原则。
- 最后楼主可能在某些点说的不是很完全,请大家多多指教,献丑了。。。
关于接口的理解,还有哪些不足的地方。。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 北极猩猩 2015-01-17 00:07关注
个人觉得楼主对于抽象类的理解是比较准确的。抽象类其实并不是一种“抽象”(有点绕嘴),而更类似一种“公共实现”。因此在面向对象设计中,抽象类的重要性比不上接口。个人觉得抽象类更类似于一种实现细节。
而接口这是真正的“抽象”。将一组相关的属性/操作提取出来供调用者使用。从而使得调用者和实现者解耦。
实际工作中经常出现的情况是,调用者C(已存在),需要执行功能A;实现者O,支持功能A,但是还做了一大堆其他事情。这时候吧功能A提取出来,做个接口,然后让C通过接口A调用O,这样需要换个P来实现A功能的时候就可以直接换掉O,而不用再修改C了。解决 无用评论 打赏 举报
悬赏问题
- ¥60 版本过低apk如何修改可以兼容新的安卓系统
- ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
- ¥50 有数据,怎么建立模型求影响全要素生产率的因素
- ¥50 有数据,怎么用matlab求全要素生产率
- ¥15 TI的insta-spin例程
- ¥15 完成下列问题完成下列问题
- ¥15 C#算法问题, 不知道怎么处理这个数据的转换
- ¥15 YoloV5 第三方库的版本对照问题
- ¥15 请完成下列相关问题!
- ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?