在 JDK 8 之前,我们接口里只存在常量、抽象方法
public interface MyInterface {
/**
* 常量(默认就是public abstract final修饰的)
*/
String CONSTANT = "常量";
/**
* 抽象方法(默认就是public abstract修饰的)
*/
void abstractMethod();
}
在 JDK 8 版本里,增加了默认方法和静态方法
默认方法可以定义方法的默认实现,使用 default
关键字修饰
public interface MyInterface {
/**
* 默认方法
*/
default void defaultMethod() {
System.out.println("这是默认方法");
}
}
public class MyClass implements MyInterface{
public static void main(String[] args) {
MyClass myClass = new MyClass();
myClass.defaultMethod();
}
}
运行结果:
这是默认方法
因为实现类可以不重写接口中的默认方法,所以可以往现存接口中添加新的方法,不用强制那些已经实现了该接口的类也同时实现这个新加的方法,非常棒!
此外还可以在接口里定义静态方法,使用 static
关键字修饰
public interface MyInterface {
/**
* 静态方法
*/
static void staticMethod() {
System.out.println("这是静态方法");
}
}
public class MyTest{
public static void main(String[] args) {
MyInterface.staticMethod();
}
}
运行结果:
这是静态方法