jdk8之前,接口中不能存在实例化方法,jdk8对接口的功能进行了增强,可以支持三种实例化方法:
- 使用default修饰的默认方法
- 使用static修饰的静态方法
- 使用private修饰的私有方法(jdk9开始支持)
代码如下:
package jdk8;
/* @description:jdk8开始支持,接口中的实例化方法
*/
public interface A {
/**
* 1 默认方法,使用default修饰
*/
default void method1(){
System.out.println("hello method1");
}
/**
* 2 静态方法 使用static修饰
*/
static void method2(){
System.out.println("hello method2");
}
/**
* 3 私有方法 使用private修饰 从jdk9开始支持
* 私有方法只能在接口内部被调用,可以被其他私有方法或静态方法或default方法调用
*/
private void method3(){
System.out.println("hello method3");
}
/**
* 私有方法的调用方法
*
*/
default void method4(){
method3();
}
}
测试代码:
package jdk8;
/* @description:接口的测试类
*/
public class TestA {
public static void main(String[] args) {
B b = new B();
b.method1(); // 调用默认方法
A.method2(); // 调用静态方法
b.method4(); // 通过默认方法调用私有方法
}
}
class B implements A{
}
接口的其他说明:
- 一个接口可以继承多个接口
- 一个接口继承的多个接口中,如果存在冲突的方法签名(方法名相同、返回值不同),则不能实现多继承
- 一个类在继承多个接口时,如果接口中存在名称相同,返回值相同的默认方法,可以通过实现该方法解决冲突