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 }