文档章节

接口 抽象类

勤奋的蚂蚁
 勤奋的蚂蚁
发布于 2017/02/25 20:29
字数 603
阅读 18
收藏 0

今天看文章说到工作中对于接口和抽象类使用是否按照一定标准,仔细想了想,接触的几个项目,都没有按照一定标准使用.

网上搜索了一番,关于使用标准各有各的说法,不过大多数人从类可以继承和接口不可以继承,只可以实现方面考虑,即类的继承认为是"is-a",接口认为是"like-a"这么两种形式.

有的认为接口是一种类似框架的存在,即实现接口的对象可以没有任何关联,完全是不同的类别.

比如说猫,狗可以认为是动物,都有叫这样的行为,叫的内容不同,一个喵喵,一个汪汪,那么可以把叫抽象出来,具体的叫声有子类实现;这样定义为抽象类;再者以飞为例,鸟和飞机都可以飞,但是属于不同类别,则定义为接口.但是个人认为如果把叫的范围扩大一些,不仅仅局限于动物,那么是不是就可以定义为接口了;如果把飞范围缩小些,比如大雁、麻雀,那么是不是可以定义为抽象类了。如此说来,定义是接口还是抽象类,完全由对象的范围来决定,即由项目中的对象来决定.

当然接口需要遵循ISP原则,全称“ISP接口隔离原则”,以下从描述摘自http://baike.baidu.com/item/isp/4807182#viewPageContent

1.使用多个专门的接口比使用单一的总接口要好

2. 一个类对另外一个类的依赖性应当是建立在最小的接口上的

3. 一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染。

简单来说就是接口要合乎大小,不要胖,不要瘦.

实现方法主要以下两种:

1、使用委托分离接口.
2、使用多重继承分离接口.

这个明天再详细研究.

总而言之,接口和抽象类的使用规则建立在对象基础上,“is-a”、“like-a”是比较容易理解区别的,需要具体问题具体分析.

 

© 著作权归作者所有

共有 人打赏支持
勤奋的蚂蚁
粉丝 7
博文 51
码字总数 13737
作品 0
海淀
第十八节:详解Java抽象类和接口的区别

前言 对于面向对象编程来说,抽象是它的特征之一。 在Java中,实现抽象的机制分两种,一为,二为。 抽象类为,接口为。 今天来学习一下Java中的抽象类和接口。 目录 什么是抽象 什么是抽象类...

达叔小生
08/01
0
0
什么是抽象类?什么是接口?两者有什么区别?如何使用它

一、抽象类: 抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中, 且不包含任何实现,派...

lzw_me
2014/04/30
0
0
think in java第九章接口 总结随笔

什么是接口,接口的作用 java接口是一系列方法的声明,是一些方法特征的集合,接口只有方法的特征没有方法的实现。 接口可以提供符合接口需求的类的一套规范(其实感觉就是一个招牌),主要作...

The_flying_pig
2017/07/18
0
0
什么是抽象类?什么是接口?接口和抽象类的区别在哪里?怎样去理解它们呢?

1、这里我们来参考一下博文。 http://blog.csdn.net/fenglibing/article/details/2745123 接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么? 接口和抽象类的概念不一样。接口是对...

Oscarfff
2015/04/17
0
0
C#中抽象类和接口的区别

一、抽象类: 抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派...

晨曦之光
2012/03/09
111
0

没有更多内容

加载失败,请刷新页面

加载更多

Win10内部更新:警告用户别用chrome和Firefox

简评:别和 Chrome 和 Firefox 约行不,我 Edge 明明更美、屁股更翘、更性感。。。 微软正在测试 Windows 10 的一个更新:警告用户不要安装 Chrome 和 Firefox。是测试人员发现的这个新警告,...

极光推送
27分钟前
2
0
Java并发编程高阶技术 高性能并发框架源码解析与实战

全网唯一深度解析并发编程框架disruptor底层源码课程,助你成为并发编程高手,拿下高薪 网盘地址下载

qq__2304636824
今天
1
0
day92-20180918-英语流利阅读-待学习

健身最大的敌人不是懒惰,而是逞强 Daniel 2018-09-19 1.今日导读 还记得 2008 年北京奥运会运动员刘翔的退赛风波吗?那天几乎所有中国人都将视线聚焦在了鸟巢体育馆 110 米栏的项目上,迫不...

飞鱼说编程
今天
8
0
70.shell的函数 数组 告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析 20.16/20.17 shell中的函数: ~1. 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段...

王鑫linux
今天
3
0
分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部