接口优于抽象类

接口和抽象类这两种机制之间的区别:
1、抽象类允许包含某些方法的实现,但是接口不允许。
2、为了实现由抽象类定义的类型,类必须成为抽象类的一个子类。

java只允许单继承,所以抽象作为类型定义受到了极大的极限。

接口允许我们构造非层次结构的类型框架
类型层次对于组织某些事物是非常适合的,但是其他有些事物并不能被组织成一个严格的层次结构。例如:假设我们有一个接口代表一个singer(歌曲家)另一个接口代表songwriter(作曲家)

public interface Singer{
AudioClip sing(Song s);
}

public interface SongWiriter{
Song compose(boolean hit);
}


在现实生活中,有些歌曲家本身就是作曲家,因为我们使用了接口而不是抽象类定义了这些类型,所以对于单个类而言,它同时实现Singer和SongWirter是完全允许的。实际上我们可以定义第三个接口,它同时扩展了Singer和SongWirter,并添加一些适合这些组合的新方法:

public interface SingerSongWirter extends Singer,SongWriter{
AudioClip strum();
void actSensitive();
}


一旦你这么做了,接口就可以成为救世主,能帮助你解决大问题。另一种做法是编写一个臃肿的类层次,就会出现“组合大爆炸”
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值