JavaSE-22.2.3【接口中私有方法(JDK9更新)】

 1 package day13.lesson2;
 2 
 3 /*
 4 2.3 接口中私有方法
 5 
 6     私有方法产生原因
 7         Java 9中新增了带方法体的私有方法,这其实在Java 8中就埋下了伏笔:Java 8允许在接口中定义带方法体的默认方法和静态方法。
 8         这样可能就会引发一个问题:当两个默认方法或者静态方法中包含一段相同的代码实现时,
 9         程序必然考虑将这段实现代码抽取成一个共性方法,而这个共性方法是不需要让别人使用的,
10         因此用私有给隐藏起来,这就是Java 9增加私有方法的必然性
11 
12     定义格式
13         格式1
14             private 返回值类型 方法名(参数列表) { }
15         范例1
16             private void show() {
17             }
18         格式2
19             private static 返回值类型 方法名(参数列表) { }
20         范例2
21             private static void method() {
22             }
23 
24     注意事项
25         默认方法可以调用私有的静态方法和非静态方法
26         静态方法只能调用私有的静态方法
27 
28     PS:本地JDK8,本节代码运行报错,仅学习用法
29  */
30 public class MyInterDemo {
31     public static void main(String[] args) {
32         MyInter mi = new MyInterImpl();
33         mi.show1();
34         mi.show2();
35 
36         MyInter.method1();
37         MyInter.method2();
38     }
39 }
40 
41 interface MyInter{
42     //默认方法
43     default void show1(){
44         System.out.println("show1 begin");
45 //        System.out.println("初级工程师");
46 //        System.out.println("中级工程师");
47 //        System.out.println("高级工程师");
48 
49 //        show(); //JDK9开始支持
50         method(); //静态只能调用静态,非静态可以调用非静态和静态
51         System.out.println("show1 end");
52     }
53     default void show2(){
54         System.out.println("show2 begin");
55 //        System.out.println("初级工程师");
56 //        System.out.println("中级工程师");
57 //        System.out.println("高级工程师");
58 
59 //        show();
60         method();
61         System.out.println("show2 end");
62     }
63 
64     //私有方法
65     private void show(){
66         System.out.println("初级工程师");
67         System.out.println("中级工程师");
68         System.out.println("高级工程师");
69     }
70     private static void method(){
71         System.out.println("初级工程师");
72         System.out.println("中级工程师");
73         System.out.println("高级工程师");
74     }
75 
76     //静态方法
77     static void method1(){
78         System.out.println("method1 begin");
79 //        System.out.println("初级工程师");
80 //        System.out.println("中级工程师");
81 //        System.out.println("高级工程师");
82         method(); //JDK9开始支持
83         System.out.println("method1 end");
84     }
85     static void method2(){
86         System.out.println("method2 begin");
87 //        System.out.println("初级工程师");
88 //        System.out.println("中级工程师");
89 //        System.out.println("高级工程师");
90         method();
91         System.out.println("method2 end");
92     }
93 }
94 
95 class MyInterImpl implements MyInter{
96 
97 }

 

posted @ 2021-06-11 14:38  yub4by  阅读(78)  评论(0编辑  收藏  举报