Think in Java之Interface

120 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第19天,点击查看活动详情

建立通用接口的唯一理由是:不同的子类可以用不同的方式表示此接口。通用接口建立起一种基本形式,以此表示所有导出类的公共部分,此时该基类类型称之为抽象类。

抽象类除了通过通用接口操作一系列类的目的之外还有就是阻止产生这个类的对象除此之外没有任何意义。

接口中的方法默认都是public的,当然也可以在内部类里面定义private的接口,那么这个接口只能在外部类中访问并且也只能在外部类中使用,

接口提供了产生一个完全抽象的类,实现接口就像继承类一样,所有实现了该接口的类都像是这个接口,可以明确知道可以调用哪些方法,并且可以配合多态实现不同的设计模式

策略模式

根据所传递的参数对象的不同而具有不同行为的方法

这类方法包含所要执行的算法中固定不变的部分,而“策略”包含变化的部分

固定不变的部分即为定义好的方法参数类型,变化的部分代表的是传入的实际类型不同而拥有的不同的行为模式

适配器模式

如果想让某个类也有之前存在的某个行为的话,最好的方式就是让方法接受接口类型,通过接口的伪多重机制来实现。

让方法接受接口类型,是一种让任何类都可以对该方法进行适配的方式,这也是使用接口而不是类的强大之处。

接口可以使用多重继承

接口之间可以通过继承来实现复用,只可以将extends用于单一类,但是可以引用多个基类接口。

何时使用抽象类何时使用接口

如果要创建不带任何方法定义和成员变量的基类,那么就应该选择接口而不是抽象类。,如果知道某事物应该成为一个基类,那么第一选择应该是是他成为一个接口。

接口中的作用域

因为你放入接口中的任何域豆子董事static和final的,所以接口常用做创建常量组的工具。JavaSe5之前

由于域是static的也即代表这个类只会在第一次加载的时候只会保证初始化一次,

总结

任何抽象性都应该是应真正的需求而产生的。当必须时应该重构接口而不是到处添加抽象性的东西