接口的概念
答:接口相当于彻底抽象的类。
接口是从多个相似类中抽象出来的规范(要暴露出来供大家遵守),接口不提供任何实现。
接口的定义
[修饰符] interface 接口名 extends 父接口1,父接口2…
{
零个到多个常量定义…
零个到多个抽象方法定义…
零个到多个内部类、接口、枚举定义…
零个到多个默认方法或类方法定义…
}
【备注:】①修饰符可以是public 或者省略,如果省略了public访问控制符,则默认采用包权限访问控制符,即只有在相同包结构下才可以访问该接口。
②一个接口可以有多个直接父接口,但接口只能继承接口,不能继承类。
接口里可含有以下成员
①成员变量(只能是静态常量(由 public static final 修饰。))
②方法(只能是抽象实例方法(由public abstract修饰)、类方法(由static修饰)或默认方法(由default修饰))
③内部类(包括内部接口、枚举(默认采用public static修饰))定义
接口的继承
【概念:】
①接口的继承和类继承不一样,接口完全支持多继承,即一个接口可以有多个直接父接口。
②和类继承相似,子接口扩展某个父接口,将会获得父接口里定义的所有抽象方法、常量。
使用接口
定义了一个类:Printer;两个接口:Product、Output。并且Printer实现了(implements)Product、Output。
所以有以下代码成立:
//创建一个Prenter对象,当成Output使用
Output o = new Printer();
//创建一个Printer对象,当成Product使用
Product p = new Printer();
- 接口不能用于创建实例,但接口可以用于声明引用类型变量
- 当使用接口来声明引用类型变量时,这个引用类型变量必须引用到其实现类的对象
- 接口的主要用途就是被实现类实现。
接口的主要用途
①定义变量,也可用于进行强制类型转换
②调用接口中定义的常量
③被其他类实现
【备注】
①一个类可以实现一个或多个接口,继承用extends关键字,实现则用implements关键字。
②实现接口与继承父类相似,一样可以获得所实现接口里定义的常量(成员变量)、方法(包括抽象方法和默认方法)
[修饰符] class 类名 extends 父类 implements 接口1,接口2…
{
类体部分
}