在jdk8之前,接口(interface)中之中可以定义变量和方法,变量必须是public、static、final的,方法必须是public、abstract的。由于这些修饰符都是默认的,所以在JDK8之前,接口中只能定义变量和抽象方法,且不能写方法体。
而JDK8及以后,可以在接口中定义静态(static)方法和默认(default)方法。
例:定义一个接口,在接口中定义默认方法和静态方法,想办法调用这两个方法。
1.定义接口
public interface ITest {
//默认方法
default void defaultMethod(){
System.out.println("在接口中定义了默认方法");
}
//静态方法
static void staticMethod(){
System.out.println("在接口中定义了静态方法");
}
}
2.定义实现类
//实现类
public class TestImpl implements ITest{
//可以重写方法
/*@Override
public void defaultMethod() {
System.out.println("......");
}
*/
}
3.调用方法
public class Main {
public static void main(String[] args) {
//静态方法,只能通过接口名调用
ITest.staticMethod();
//default方法,只能通过接口实现类的对象来调用
new TestImpl().defaultMethod();
}
}