什么是接口
- 是抽象方法的集合,接⼝通常以interface来声明,⼀个类通过继承接⼝的⽅式,从⽽而来继承接⼝的抽象⽅法
语法
interface 名称 [extends 其他的接口名] {
// 声明变量
// 抽象⽅法
int getMoney();
}
接⼝的特点
接⼝的方法都是抽象⽅法,默认都是 public abstract,其他修饰符都会报错
- 接⼝中可以含有变量,但是接⼝中的变量会被隐式的指定为 public static final
- 类描述对象的属性和⽅法,⽽接⼝则包含类要实现的方法
- 接⼝无法被实例化,需要被实现才行
一个实现接⼝的类,必须实现接⼝内所描述的所有⽅法,否则就必须声明为抽象类
接⼝和类的区别
接⼝没有构造函数
- 接⼝里可以有静态方法和方法体
- 接⼝中所有的方法必须是抽象方法(JDK8之后就不是)
- 接⼝不是被类继承了,而是要被类实现
-
接⼝的实现implements
当类实现接口的时候,类要实现接口中所有的⽅法,不然类必须声明为抽象的类,使⽤implements关键字实现所有接⼝
语法
class 类名 implements 接⼝名称[, 其他接口名称, 其他接口名称]{
//要实现的⽅方法
}
注意
interface中可以有static方法,但必须有方法实现体,该方法只属于该接⼝,接⼝名直接调用该方法
- 接⼝中新增default关键字修饰的方法,default⽅法只能定义在接口中,可以在⼦类或⼦接口中被重写
- default定义的⽅法必须有方法体
- 父接口的default⽅法如果在子接口或⼦类被重写,那么子接⼝实现对象、⼦类对象,调用该⽅法,以重写为准
- 本类、接⼝如果没有重写父类(即接口)的default⽅法,则在调⽤default⽅法时,使⽤父类定义的default方法逻辑
public interface IPay{
// static修饰符定义静态⽅法
static void staticMethod() {
System.out.println("接⼝中的静态方法");
}
// default修饰符定义默认方法 ,默认方法不是抽象⽅法,可以不重写也可以重写
default void defaultMethod() {
System.out.println("接⼝中的默认方法");
}
}
// static⽅法必须通过接口类调用
IPay.staticMethod();
//default方法必须通过实现类的对象调用
new IPay().defaultMethod();