概念
接口是一系列方法的声明, 是抽象方法的集合;一个接口只有方法的声明,没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现类可以具有不同的行为。
适用场景
当抽象类中的方法都是抽象方法,变量都是常量时,建议将该类转换为接口描述。
关键词
interface/implements
特点
耦合性低、规范化等等,接口与接口之间可以多继承,类与接口之间可以多实现
例如:电脑上的USB接口,即插即拔式,扩展性强,有规则要求。
接口定义语法形式:
[修饰符] interface 接口名 [extends] [接口列表]{
接口体
}
类实现接口的语法形式:
[类修饰符] class 类名 implements 接口列表{
类体
}
示例代码
1.定义蓝牙接口
//定义蓝牙接口
public interface BlueTooth {
//提供输入服务
public void input();
//提供输出服务
public void output();
}
2.定义蓝牙耳机类,实现蓝牙接口
public class Earphone implements BlueTooth {
String name ="蓝牙耳机";
//实现蓝牙耳机输入功能
public void input(){
System.out.println(name+"正在输入音频数据...");
}
//实现蓝牙耳机输出功能
public void output(){
System.out.println(name+"正在输出反馈数据...");
}
}
3.定义iPad类,实现蓝牙接口
public class iPad implements BlueTooth {
String name = "iPad";
//实现iPad输入功能
public void input(){
System.out.println(name+"正在输入数据...");
}
//实现iPad输出功能
public void output(){
System.out.println(name+"正在输出数据...");
}
}
4.测试类
public class Test {
public static void main(String[] args) {
//创建并实例化一个实现了蓝牙接口的蓝牙耳机对象eq
BlueTooth ep = new Earphone();
//调用ep的输入功能
ep.input();
//创建并实例化一个实现了蓝牙接口的iPad对象ip
BlueTooth ip = new iPad();
//调用iP的输入功能
ip.input();
//调用iP的输出功能
ip.output();
}
}
特征
1.接口中不允许有实体方法。
2.接口中可以有成员变量,默认修饰符是public static final。
3.方法的默认修饰符是public abstract。
4.一个类中可以实现多个接口。
5.接口可以继承其他接口,实现接口合并功能。
抽象类和接口之间的区别
- 接口中都是抽象方法,抽象类中还可以有普通方法
- 抽象类中可以有构造器,接口中没有
- 抽象类中定义的是公共的功能,接口中定义的额外的功能
注意
jdk1.8之前接口的方法都是抽象方法,变量都是常量,1.8及之后接口可以定义默认方法