接口
接口
给一些抽象方法,封装到一起,某个类使用的时候,根据具体需求再进行重写
interface 接口名{
//属性
//方法
}
class 类名 implements 接口名{
//属性
//方法
//接口的抽象方法
}
在jdk8及以后,接口里面的方法不全是抽象方法,也可以有普通方法(前面用default修饰)和静态方法。
注意事项
接口不能被实例化
接口的属性默认是public static final
接口的方法默认是public abstract,也可以写普通方法(前面用default修饰)和静态方法。
接口和接口之间可以继承,但接口不能继承类
类实现接口时,必须重写接口里的所有抽象方法,除非声明抽象类
类可以实现多个接口
接口vs继承
解决问题的不同
继承:解决代码复用性可维护性
接口:设计好各种规范,让其他类来实现他
接口比继承更灵活
继承满足is a,接口满足like a
接口一定程度上满足代码解耦
接口多态特性
多态参数
一个接口I,可以接受A对象,也可以接受B对象,体现接口的多态(接口引用指向实现接口类的对象)
多态数组
在接口I数组中,存放A和B的对象,遍历数组I,是A对象,不仅可以调用接口方法,也可以调用A独有的方法
接口存在多态传递现象
接口多态传递
public class test{
public static void main(String[] args){
//接口类型变量指向,实现接口类的对象实例
IB ib = new Teacher();
//IB 继承了IA接口,Teacher类实现了IB
//相当于Teacher类实现了接口IA
//这就是接口多态传递现象
IA ia = new Teacher();
}
}
interface IA {}
interface IB extends IA {}
class Teacher implements IB{}