文档章节

接口 抽象类

勤奋的蚂蚁
 勤奋的蚂蚁
发布于 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
海淀
私信 提问
think in java第九章接口 总结随笔

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

The_flying_pig
2017/07/18
0
0
深入理解Java中的抽象类和接口

对于面向对象编程来说,抽象是它的一大特征。在Java中,可以通过两种形式来体现OOP的抽象:抽象类和接口。这两者有太多向内的地方,又有太多不同的地方。很多人在初学的时候以为它们可以随意...

FunGa
2015/11/03
0
0
第十八节:详解Java抽象类和接口的区别

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

达叔小生
08/01
0
0
Java的接口和抽象类

对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可...

裸奔的八戒
2016/02/03
36
0
Java中抽象类和接口在概念、语法和应用上的区别和关系

春招开始了,盆友们都忙着准备笔试、准备面试,复习学过的知识点,当然我也不例外,在这里祝每一个"有心人"心想事成,梦圆2016,加油! 进入正题,今天总结了一下Java中抽象类和接口在概念、...

limiaoneu
2016/03/05
92
0

没有更多内容

加载失败,请刷新页面

加载更多

利用cefSharp实现网页自动注册登录的需要注册的一些事项

最近朋友有个需要自动注册登录点击的事,我帮着写了写,好久没写过这东西了,在写的过程中总结了需要注意的一些事项。 一、换IP之后要测试一下速度,我目前用的最简单的测试方法就是20-30秒加...

我退而结网
13分钟前
1
0
Go语言中使用 BoltDB数据库

boltdb 是使用Go语言编写的开源的键值对数据库,Github的地址如下: https://github.com/boltdb/bolt boltdb 存储数据时 key 和 value 都要求是字节数据,此处需要使用到 序列化和反序列化。...

Oo若离oO
14分钟前
1
0
zookeeper分布式锁

//lock 锁 定义分布式锁public interface Lock {//获取锁public void getLock();//释放锁public void unLock();} public abstract class ZookeeperAbstractLock implements Loc......

熊猫你好
21分钟前
0
0
mysql_事务隔离机制

事务隔离机制 事务就是要保证一组数据库操作,要么全部成功,要么全部失败。在mysql中,事务支持是在引擎层实现的。mysql是一个支持多引擎的系统,但并不是所有引擎都支持事务,比如mysql...

grace_233
24分钟前
0
0
不学无数——Java中IO和NIO

JAVA中的I/O和NIO I/O 问题是任何编程语言都无法回避的问题,可以说 I/O 问题是整个人机交互的核心问题,因为 I/O 是机器获取和交换信息的主要渠道。在当今这个数据大爆炸时代,I/O 问题尤其...

不学无数的程序员
30分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部