Java接口组成更新

1 接口组成更新

1.1 接口组成更新概述

  • 接口的组成
    • 常量:public static final
    • 抽象方法:public abstract
    • 默认方法(Java 8)
    • 静态方法(Java 8)
    • 私有方法(Java 9)

1.2 接口中默认方法(JDK8)

  • 接口中默认方法的定义格式:
    • 格式:public default 返回值类型 方法名(参数列表){}
    • 范例:public default void show(){}
  • 接口中默认方法的注意事项:
    • 默认方法不是抽象方法,所以不强制被重写。但是可以被重写,重写的时候去掉default关键字
    • public可以省略,default不能省略:default void show(){}

1.3 接口中静态方法(JDK8)

  • 接口中静态方法的定义格式:

    • 格式:public static 返回值类型 方法名(参数列表){}
    • 范例:public static void show(){}
  • 接口中静态方法的注意事项:

    • 静态方法只能通过接口名调用, 不能通过实现类名或者对象名调用
    • public可以省略, static不能省略:static void show(){}
  • 接口

package test;

public interface Inter {
    void show();

    default void method() {
        System.out.println("默认方法");
    }

//    public static void test(){
//        System.out.println("静态方法");
//    }

    static void test(){
        System.out.println("静态方法");
    }
}
  • 实现类
package test;

public class InterImpl implements Inter{
    @Override
    public void show() {
        System.out.println("show方法");
    }
}
  • 测试类
package test;

public class Demo {
    public static void main(String[] args) {
        Inter i = new InterImpl();
        i.show(); //show方法
        i.method(); //
//        i.test(); //报错

        Inter.test(); //静态方法,接口名调用静态方法
    }
}

1.4 接口中私有方法(JDK9)

  • 接口中私有方法的定义格式
    • 格式1(非静态)private 返回值类型 方法名(参数列表){}
    • 范例1:private void show() {}
    • 格式2(静态)private static 返回值类型 方法名(参数列表){}
    • 范例2:private static void method() {}
  • 接口中私有方法的注意事项
    • 默认方法可以调用私有的静态方法和非静态方法
    • 静态方法只能调用私有的静态方法
package test;

public interface Inter {
    default void show1() {
        System.out.println("show1开始执行");
//        System.out.println("初级工程师");
//        System.out.println("中级工程师");
//        System.out.println("高级工程师");
//        show();
        method();
        System.out.println("show1结束");
    }


    static void method1() {
        System.out.println("method1开始执行");
//        System.out.println("初级工程师");
//        System.out.println("中级工程师");
//        System.out.println("高级工程师");
        method();
        System.out.println("method1结束");
    }

    private void show(){
        System.out.println("初级工程师");
        System.out.println("中级工程师");
        System.out.println("高级工程师");
    }

    private static void method(){
        System.out.println("初级工程师");
        System.out.println("中级工程师");
        System.out.println("高级工程师");
    }
}

你可能感兴趣的:(java,jvm,开发语言)