jdk9中接口开始支持私有方法,主要目的是提升interface的灵活性,方便实现多继承等特性。写段代码展示一下:

    1. /**
    2. * 测试接口
    3. */
    4. public interface MyInterface {
    5. //jdk7: 只能声明全局常量 (public static final)和抽象方法 (public abstract)
    6. String STR = "常量";
    7. void method1();
    8. //jdk8: 可以生命静态方法(public static) 和默认方法
    9. static void method2() {
    10. System.out.println("静态方法体 method2");
    11. }
    12. default void method3() {
    13. System.out.println("默认实现 method3");
    14. }
    15. //jdk9:可以声明私有方法(private)
    16. private void method4() {
    17. System.out.println("私有方法 method4");
    18. }
    19. }
    1. /**
    2. * 测试一下 MyInterface
    3. * @see MyInterface
    4. */
    5. public class MyTest {
    6. public static void main(String[] args) {
    7. // MyInterface myi = new MyInterface() {
    8. // @Override
    9. // public void method1() {
    10. // System.out.println("抽象方法1");
    11. // }
    12. // };
    13. //以上写法,简化为Lambda表达式
    14. MyInterface myi = () -> System.out.println("抽象方法 method1");
    15. myi.method1(); //抽象方法调用
    16. MyInterface.method2();//静态方法调用
    17. myi.method3();//默认方法调用
    18. // myi.method4();//'method4()' has private access in 'MyInterface' 私有方法调用报错
    19. //--输入如下:--
    20. //抽象方法 method1
    21. //静态方法体 method2
    22. //默认实现 method3
    23. }
    24. }