博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第18条:接口优先于抽象类
阅读量:7283 次
发布时间:2019-06-30

本文共 811 字,大约阅读时间需要 2 分钟。

Java提供两种机制,可以用来定义允许多个实现的类型:接口和抽象类。在Java 1.8之前,这两种机制最大的区别是,抽象类允许包含某些方法的实现,但是接口则不允许(这种情况在Java 1.8发布后被改变,接口可以用default修饰符来声明一个有实现的方法。

 

接口的好处:

1.现有的类可以很容易被更新,以实现新的接口。给类增加新行为,只需在声明中增加一个implements子句。

2.接口是定义混合类型的理想选择,混合类型指类除了实现“基本类型”之外(父类),还可以实现这个混合类型,以表明它提供了某些可供选择的行为,例如Comparable是一个接口,它表明允许它的实例与其他可相互比较的对象进行排序。抽象类不可以定义混合类型,因为类不可能有一个以上的父类。

3.接口允许构造非层次结构的类型框架,类型层次对组织某些事物非常合适,但有些事物不可能被整齐地组织成一个严格的层次结构,假如有两个接口,singer和songwriter:

public interface Singer {    AudioClip sing(Song s);}public interface Songwriter {    Song compose(boolean hit);}

实际上,有些singer本身也是个songwriter,所以对于单个类而言,同时实现singer和songwriter是被允许的,可以定义第三个接口,同时扩展Singer和Songwriter,并添加一些适合于这种组合的新方法 :

public interface SingerSongwriter extends Singer, Songwriter {    AudioClip strum();    void actSensitive();}

 

转载于:https://www.cnblogs.com/13jhzeng/p/5705844.html

你可能感兴趣的文章
解决Lync边缘服务器受限制的外部呼叫
查看>>
neo4j简单学习
查看>>
IOS NSInvocation用法
查看>>
ssh时出现 Agent admitted failure to sign using the key
查看>>
华润三九 感冒灵颗粒10g*9袋/盒【说明书、功效、副作用、价格】 -京东好药师网上药店 这药又涨了1块钱...
查看>>
Spring提供的三种定时任务机制及其比较
查看>>
Visual Studio启动、附加进程调试,多个Web Application时启动多个WebServer关闭方法
查看>>
SQL语句优化提升整体效能
查看>>
Visual Studio日志
查看>>
Hadoop TDG 2 -- HDFS
查看>>
NYOJ 55
查看>>
国外创意网站设计:40个精美的水平滚动网站作品
查看>>
什么是函数式编程(Functional Programming)?
查看>>
SELECT子句
查看>>
vs2008中调用matlab生成的dll
查看>>
YbSoftwareFactory 代码生成插件【七】:YbRapidSolution for WinForm 插件生成项目总体架构介绍...
查看>>
C# partial
查看>>
VC:注册表:查询、删除项(CRegKey 的方法:Open、QueryValue、.DeleteValue、DeleteSubKey、RecurseDeleteKey)...
查看>>
WPF Step By Step 控件介绍
查看>>
EDM数据访问的三种方式
查看>>