JavaSE-22.2.1【接口中默认方法(JDK8更新)】
1 package day13.lesson2; 2 3 /* 4 2 接口组成更新 5 6 2.1 接口组成更新概述 7 8 常量 9 public static final 10 抽象方法 11 public abstract 12 默认方法(Java 8) 13 静态方法(Java 8) 14 私有方法(Java 9) 15 16 2.2 接口中默认方法 17 格式 18 [public] default 返回值类型 方法名(参数列表) { } 19 范例 20 [public] default void show3() { 21 } 22 注意事项 23 默认方法不是抽象方法,所以不强制被重写。但是可以被重写,重写的时候去掉default关键字 24 public可以省略,default不能省略 25 */ 26 public class MyInterfaceDemo { 27 public static void main(String[] args) { 28 MyInterface mi = new MyInterfaceImpl1(); 29 mi.show1(); 30 mi.show2(); 31 MyInterface mi2 = new MyInterfaceImpl2(); 32 mi2.show1(); 33 mi2.show2(); 34 35 mi.show3(); 36 mi2.show3(); 37 } 38 } 39 40 interface MyInterface{ 41 void show1(); 42 void show2(); 43 44 /*public default void show3(){ //JDK8之后,接口中可用默认方法 45 System.out.println("MyInterface-show3"); 46 }*/ 47 default void show3(){ 48 System.out.println("MyInterface-show3"); 49 } 50 } 51 52 class MyInterfaceImpl1 implements MyInterface{ 53 @Override 54 public void show1() { 55 System.out.println("MyInterfaceImpl1-show1"); 56 } 57 58 @Override 59 public void show2() { 60 System.out.println("MyInterfaceImpl1-show2"); 61 } 62 } 63 64 class MyInterfaceImpl2 implements MyInterface{ 65 @Override 66 public void show1() { 67 System.out.println("MyInterfaceImpl2-show1"); 68 } 69 70 @Override 71 public void show2() { 72 System.out.println("MyInterfaceImpl2-show2"); 73 } 74 75 @Override 76 public void show3() { //可选重写接口中的默认方法 77 System.out.println("MyInterfaceImpl2-show3"); 78 } 79 } 80 81 interface MyInterfaceSon extends MyInterface{ 82 void show3(); 83 }