6.2接口
只定义规范/协议,而不提供实现。是一种松耦合的设计
6.2.1定义接口:只支持单一继承,允许一个实现多个接口。
语法:
【访问符】interface接口名【extends父接口1,父接口2,…】{
//接口体}
接口名去调用一定是静态变量(常量)
接口名首字母大写
语法说明 :
- 访问符可是public或缺省,即在相同才可以访问接口
- 一个接口可以继承多个接口,但只能继承接口,不能继承类
- 接口体里可以包含静态常量,抽象方法内部类,内部不接口以及枚举
- 默认接口
6.2.2
实现接口
可以使用接口声明引用类型的变量一个类可以实现一个或多个接口。
语法:
【访问符】class类名implements 接口1【接口2…】{//类体}
①implements 关键字用于实现接口
②一个类可以实现一个或多个接口时,这个类必须完全实现这些接口中定义所有抽象
③一个类在实现一个或多个接口时,这个类必须完全实现这些接口中定义所有抽象方法
④一类实现某个接口时,该类获得接口定义的常量方法等,接口是一种特殊的继承
是一种更加抽象的类结构,因此不能对接口直接实例化
可以声明接口变量并用接口变量指向当接口实现类的实例
6.2.3接口继承
可以有多个父接口。
注;java 源文件中可以有多个接口和类,,但最多只能有一个接口或类是public,且该源文件的文件必须与public接口一致。
接口与抽象相似特征
相似之处:
接口和抽象类都不能被实例化。
接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。
不同之处:
1.接口里只能包含抽象方法、静态方法和默认方法,不能为普通方法提供实现,而抽象类可以。
2.接口里只能定义常量,不能定义普通成员变量,抽象类则可以。
3.接口里不包含构造器;抽象类可以包含构造器,但抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作。
4.接口里不能包含初始化块;但抽象类则完全可以包含初始化块。
5.一个类最多只能有一个直接父类(包括抽象类);但一个类可以实现多个接口,通过实现多个接口可以弥补Java单继承的不足。
面向接口编程