什么是接口
一种抽象类型,它定义了一组方法的声明,但没有提供这些方法的具体实现。接口可以看作是一种约定,规定了类应该具有哪些方法,但并不关心方法的具体实现。
接口和类的异同
- 类可以包含具体的方法实现,而接口只能声明方法但不能实现。
- 类使用关键字
class
来声明,而接口使用关键字interface
来声明。- 类可以直接实例化对象,而接口不能被实例化,需要通过实现接口的类来创建对象。
- 类之间使用继承来建立关系,而接口之间使用实现(
implements
)来建立关系,一个类可以实现多个接口。
接口的应用
- 定义标准:接口定义了一组方法的规范,可以用来定义标准或约定,使得多个类具有相同的行为。
- 实现多态:通过接口实现多态性,可以将不同的实现类对象作为接口类型使用,并且可以在运行时动态替换实现类对象。
- 解耦代码:接口可以将代码分为不同的模块,减少代码的耦合度,提高代码的可维护性和可扩展性。
- 回调机制:接口常用于实现回调机制,一个对象可以将自身的引用传递给另一个对象,在特定事件发生时被回调执行。
接口的规范
- 方法声明:接口中只能包含方法的声明而不能包含方法体。方法默认是抽象的,不需要显式地加上
abstract
关键字。 - 访问修饰符:接口中的方法默认为公共的(
public
),不能使用其他访问修饰符(如私有、受保护等)。 - 常量定义:接口可以包含常量的定义,这些常量会被隐式地声明为
public static final
,可以直接通过接口名称访问。 - 默认方法:Java 8 引入了默认方法(
default
method),允许在接口中提供具体的方法实现。默认方法使用关键字default
声明,在实现类中可以直接调用或重写。
定义和使用
语法:
访问权限修饰符 interface 接口名{
}
可以定义:
1,公共静态常量
2,公共抽象方法
3,公共静态方法
4,default修饰的普通方法
接口使用接口:多继承
含义:一个接口可以继承与多个接口
语法:
访问权限修饰符 interface 接口名1 extends 接口名2,接口名3,...{
}
注意:
1,子接口不能继承与父接口的静态方法
2,子接口继承多个父接口,多个父接口提供同样的方法,子接口必须重写该方法,因为子接口需要明确指定在发生方法冲突时应该使用哪个方法实现。
类使用接口
含义:一个类可以实现多个接口
语法:
访问权限修饰符 class 类名 extends 父类名 implements 接口名1,接口名2,...{
属性
构造函数
方法
代码块
静态代码块
}
注意:
1,子类不能继承与父接口的静态方法
2,子类实现多个父接口,多个父接口提供同样的方法,子接口必须重写该方法,以解决方法冲突。
常量接口
接口中只定义常量的接口称为常量接口
常量接口是一种特殊的接口,它仅包含常量的定义,没有方法的声明。常量接口通常用于存放常量的定义,这些常量可以被其他类直接使用。然而,根据Java编程规范的建议,不推荐使用常量接口,因为常量应该与相关的类进行关联,而不是与接口进行关联。
接口回调
接口回调指的是一个对象将自身的引用传递给另一个对象,以便在特定事件发生时被回调执行。接口回调常用于实现事件驱动、异步处理等场景。通过接口回调,可以实现对象之间的松耦合,使得程序更加灵活可扩展。在回调机制中,接口定义了回调方法的声明,而具体的回调方法实现则由实现接口的类来完成。
1,创建接口对象
2,创建A对象
3,使用A对象调用a1方法传递接口对象
4,使用A对象调用a2方法,a2方法中使用传入的接口对象调用接口方法