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 }