十八、Java8新特性——接口中的方法【黑马JavaSE笔记】

2022-11-23 17:48:15 浏览数 (2)

文章目录
  • 接口组成更新
    • (一)接口组成更新概述
    • (二)接口中的默认方法
    • (三)接口中的静态方法
    • (四)接口中的私有方法

接口组成更新

(一)接口组成更新概述

接口的组成

  • 常量 public static final
  • 抽象方法 public abstract
  • 默认方法(Java8)
  • 静态方法(Java8)
  • 私有方法(Java9)

(二)接口中的默认方法


(三)接口中的静态方法

为什么接口中的静态方法不能通过实现类类名调用?

答:假如有两个不同的接口,并且他们的静态方法名都为test(),并且一个实现类同时实现了这两个接口,如果可以通过实现类名调用静态方法,那么 实现类.test()就不知道调用的是这两个接口的其中哪一个静态方法了


(四)接口中的私有方法

代码演示:

代码语言:javascript复制
public interface inter {
    //默认方法
    private void show() {
        System.out.println("Java初级程序员");
        System.out.println("Java中级程序员");
        System.out.println("Java高级程序员");
    }
    
    default void show1() {
        System.out.println("show1方法开始执行了");
//        System.out.println("Java初级程序员");
//        System.out.println("Java中级程序员");
//        System.out.println("Java高级程序员");
        show();//默认的可以调用私有的非静态方法
        method();//默认的也可以调用私有的静态方法
        System.out.println("show1方法执行结束了");
    }

    default void show2() {
        System.out.println("show2方法开始执行了");
//        System.out.println("Java初级程序员");
//        System.out.println("Java中级程序员");
//        System.out.println("Java高级程序员");
        show();//默认的可以调用私有的非静态方法
        method();//默认的也可以调用私有的静态方法
        System.out.println("show2方法执行结束了");
    }

    //私有的静态方法
    private static void method(){
        System.out.println("Java初级程序员");
        System.out.println("Java中级程序员");
        System.out.println("Java高级程序员");
    }
    
    private static void method1() {
        System.out.println("method1方法开始执行了");
//        System.out.println("Java初级程序员");
//        System.out.println("Java中级程序员");
//        System.out.println("Java高级程序员");
        method();
//        show();//静态的不能调用非静态方法
        System.out.println("method1方法执行结束了");
    }
    private static void method2() {
        System.out.println("method2方法开始执行了");
//        System.out.println("Java初级程序员");
//        System.out.println("Java中级程序员");
//        System.out.println("Java高级程序员");
        method();
        System.out.println("method2方法执行结束了");
    }
}


0 人点赞