接口
什么是接口?
- 微观概念:
- 接口是一种能力和约定。
- 接口的定义:代表了某种能力。
- 方法的定义:能力的具体要求。
- 经验:Java为单继承,当父类的方法种类无法满足子类需求时,可实现接口扩充子类能力。
- 接口支持多实现,可为类扩充多种能力。
- 举个粒子:在前面已经理解了什么是继承,和继承的优缺点,而接口就是来扩充继承的缺点的,继承只能是单继承,就如每个人都只有一个亲生父母,然而接口比较开放,接口可以让实现他的类能实现多个接口,实现接口的类就能有更多的特征和能力,就可以实现类的扩充。既然接口是继承的一种扩充版,约定也就更加强,很多能力和作用都是和抽象类大同小异,接下来让我们慢慢的了解接口吧!
接口的设计
在公司设计接口的人往往都是项目经理或者架构师,因为接口的设计他需要对整个软件的架构和需求有更深层的理解,刚开始工作都是使用别人设计好的接口。
定义
Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征,没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(能力)。
接口特点
- 它定义的变量默认是public static final 常量。
- 它定义的方法默认是public abstract 抽象方法。
- 类和接口是一种实现的关系,关键字是implements,一个类可以同时实现多个接口。
- 一个类中实现的接口(可以是多个接口),就必须覆盖接口所有的方法。不然该类就必须声明为抽象的。
- 不能用接口来创建对象,接口没有构造方法。
- 一个接口可以继承多个接口。
- 接口也是生成.class文件。
- 一个类可以同时继承一个类和实现多个接口。
接口的语法
- 接口相当于特殊的抽象类,定义方式组成部分与抽象类类似。
- 使用interface关键字定义接口。
- 没有构造方法,不能创建对象。
- 只能定义:公开静态常量、公开抽象方法。
- 实现接口(引用接口)使用implements关键字。(实现接口相当于继承,一样可以使用多态)
接口的规范
- 任何类在实现接口时,必须实现接口中所有的抽象方法,否则此类为抽象类。
- 实现接口中的抽象方法时,访问修饰符必须是public。
接口的引用
- 同父类一样,接口也可声明为引用,并指向实现类对象。
- 注意:
(1)仅可调用接口中所声明的方法,不可调用实现类中的独有的方法。(和继承的向上转型一样)
(2)可强转回实现类本身类型,进行独有方法调用。(和继承的向下转型一样)
(3)特殊:通过接口可调用Object中的公开方法。
接口的多态
- 多种不同类型的引用指向同一个对象时,表示看待对象的视角不同。
- 不同引用所能看到的对象范围不同,不同调用自身类型中所声明的部分。
接口与抽象类的区别
- 接口中不能有具体的实现,但抽象类可以。
- 一个类要实现一个接口必须实现其所有的方法,而抽象类不必。
- 通过接口可以实现多继承,而抽象类做不到。
- 接口不能有构造方法,而抽象类可以。
- 实体类与接口之间只有实现关系,而实体类与抽象类只有继承关系,抽象类与接口之间只有实现关系。
- 接口中的方法默认都是公开抽象方法,属性默认都是公开静态常量,而抽象类不是。
常见关系
- 类与类
(1)单继承
(2)extends 父类名称 - 类与接口
(1)多实现
(2)implements 接口名称1,接口名称2,接口名称n… - 接口与接口
(1)多继承
(2)extends 父接口1,父接口2,父接口n…
常量接口、标记接口
- 常量接口将多个常量用于表示状态或者固定值的变量,以静态常量的形式定义在接口中统一管理,提高代码可读性
- 标记接口中没有包含任意成员,仅仅用作标记,如Serializable、Cloneable等
什么是接口?
宏观概念:接口是一种标准。
回调原理
- 接口回调:先有接口的使用者,后有接口的实现者。
- 如图
过程
在Java代码中实现类的顺序是①→②→③→④,上面的→表示的是引用关系。
我们要先创建接口(如USB)→再创建工具(如电脑)电脑类中有应用USB的声明,声明了3个变量来表示接口的实现者→再创建3个接口的实现者也就是引用接口implements,有U盘、USB台灯、USB数据线→接着用工具的调用者即创建一个(测试类)调用电脑的类,在main()中,声明电脑类,此时可以用电脑类调用电脑类里面的方法,一个是电脑正常工作、一个是引用USB的工作,因为电脑类中提前用接口声明了3个USB变量,此时在工具的调用者类中使用多态USB声明变量实现对应的3个接口的实现者,再通过工具对象给3个USB声明的变量分别赋值即可。
接口的好处
- 程序的耦合度降低
- 更自然的使用多态
- 设计与实现完全分离
- 更容易搭建程序框架
- 更容易更换具体实现
结束语
光头强们,拜了拜咧~~~