1.接口的定义
- 定义接口使用 interface 关键字
- 接口修饰符可以是public 或者省略,如果省略了 public 访问控制符,则默认采用包权限访问控制符,即只有在相同包结构下才可以访问该接口。接口可被当成一个特殊的类,因此一个 Java 源文件里最多只能有一个 public 接口,如果一个 Java 源文件里定义了一个 public 接口,则该源文件的 主文件名必须与该接口名相同
- 接口定义的是多个类共同的公共行为的一种规范,因此接口里不能包含构造器和初始化块定义
- 接口里可以包含成员变量(只能是静态常量)、方法(只能是抽象实例方法、static类方法 、default修饰的默认方法或private修饰的私有方法)、内部类(包括内部接口、枚举)定义。
- 在接口中定义成员变量时,不管是否使用public static final 修饰符,接口里的成员变量总是使用这三个修饰符来修饰。接口里定义的成员变量只能在定义时指定默认值
2.接口的继承
- 接口的继承和类继承不一样,接口完全支持多继承,即一个接口可以有多个直接父接口。和类继承相似,子接口扩展某个父接口,将会获得父接口里定义的所有抽象方法、常量。
3.接口的使用
- 一个类可以实现一个或多个接口,继承使用 extend 关键字,实现则使用 implements 关键字。一个类可以继承 个父类,并同时实现多个接口, implements 部分必须放在extends部分之后
4.接口和抽象类的差别
- 二者设计目的上:
- 接口作为系统与外界交互的窗口 接口体现的是一种规范 对于接口的实现者而言,接口 规定了实现者必须向外提供哪些服务(以方法的形式来提供);对于接口的调用者而 接口规定了调用者可调用哪些服务,以及如何调用这些服务(就是如何来调用方法)。当在一个程序 中使用接口时,接口是多个模块间的藕合标准:当在多个应用程序之间使用接口时 接口是多个程序之间的通信标准。
- 抽象类则不 样,抽象类作为系统中多个子类的共同父类 它所体现的是一种模板式设计。 抽象类作为多个子类的抽象父类,可以被当成系统实现过程中的中间产品 这个中间产品己经实现了系统部分功能(那些己经提供实现的方法) ,但这个产品依然不能当成最终产品,必须有更进 步的完善 ,这种完善可能有几种不同方式。
- 除此之外,接口和抽象类在用法上也存在如下差别:
- 接口里只能定义静态常 ,不能定义普通成员变 :抽象类里则既可以定义普通成员变量 ,也可以定义静态常量。
- 接口里不包含构造器;抽象类里可以包含构造器
- 接口里不能包含初始化块:但抽象类则完全可以包含初始化块
- 一个类最多只能有 个直接父类,包括抽象类;但 个类可以直接实现多个接口,通过实现多个接口可以弥补 Java 单继承的不足。
网友评论