JDK8以前,接口内只能定义抽象方法;

JDK8,接口内允许定义默认方法、静态方法;

JDK9,接口内允许定义私有方法

default:默认方法

public interface Essay01 {

    /**
     * 在接口内定义默认方法
     */
    public default void show(){
        System.out.println("接口Essay01内定义的show()方法......");
    }
}

需要注意以下3点: (1)接口内定义的默认方法,public可以省略; (2)默认方法不要求实现类必须覆写,覆写的话,default需要去掉;

(3)如果说接口继承的多个接口,有重名的默认方法,该接口必须重写父类重名的默认方法

static:静态方法

public interface Essay01 {

    /**
     * 接口内的抽象方法
     */
    void add();

    /**
     * 在接口内定义静态方法
     */
    public static void show() {
        System.out.println("接口Essay01内定义的show()方法......");
    }
}

需要注意以下2点: (1)接口内的静态方法,实现类不能覆写;不能覆写不是说覆写会报错,而是实现类如果定义了和接口静态方法一样的方法,是表明子类也定义了一个静态方法,不算是覆写; (2)接口内的静态方法,只能通过接口名.方法名的方式来访问,不能通过实现类或者对象名.方法名的方式来访问

private:私有方法

public interface Essay01 {

    /**
     * 在接口内定义默认方法
     */
    public default void add(){
        log1();
        System.out.println("接口Essay01内定义的add()方法......");
    }

    /**
     * 在接口内定义静态方法
     */
    public static void show() {
        log2();
        System.out.println("接口Essay01内定义的show()方法......");
    }

    /**
     * 在接口内定义私有方法
     */
    private void log1(){
        System.out.println("记录日志信息......");
    }

    /**
     * 在接口内定义静态私有方法
     */
    private static void log2(){
        System.out.println("记录日志信息......");
    }
}

接口内使用私有方法的好处有两点:

1)简化代码:可以把接口内default()方法之间、static()之间方法代码相同的部分抽取出来,成为一个私有方法,后面有需要可以直接调用。默认方法调用私有方法,静态方法调用私有静态方法。

2)安全规范:私有方法不能被外界访问,只能在接口内使用,安全且规范

首次发布

hezhongying.blog.csdn.net/article/det…

本站提供的所有下载资源均来自互联网,仅提供学习交流使用,版权归原作者所有。如需商业使用,请联系原作者获得授权。 如您发现有涉嫌侵权的内容,请联系我们 邮箱:alixiixcom@163.com