JDK8开始之后接口新增的方法
JDK7以前:接口中只能定义抽象方法
JDK8的新特性:接口中可以定义有方法体的方法(默认、静态)
JDK9的新特性:接口中可以定义私有方法
接口中的默认方法 InterA
package com.itheima.a06;public interface InterA {// 抽象方法 不能拥有方法体public abstract void show();// public 可以省略 default不可以省略public default void print() {System.out.println("A接口中的默认方法---print");}
}
InterB
package com.itheima.a06;public interface InterB {// 抽象方法 不能拥有方法体public abstract void show();// public 可以省略 default不可以省略public default void print() {System.out.println("B接口中的默认方法---print");}
}
intermpl
package com.itheima.a06;public class intermpl implements InterA,InterB {@Overridepublic void show() {System.out.println("实现类 重写的抽象方法");}// 默认方法不是抽象方法 不强制重写 如果重写 去掉default关键字// 实现多个接口 多个接口存在相同名字的默认方法,子类就必须对该方法重写@Overridepublic void print() {System.out.println("重写接口中的默认方法");}
}
Test
package com.itheima.a06;public class Test {public static void main(String[] args) {intermpl ii=new intermpl();ii.show();ii.print();}
}
JDK8以后新增的静态方法
Inter
package com.itheima.a07;public interface Inter {public abstract void method();// 静态方法不能被重写public static void show(){System.out.println("Inter方法中的静态方法");};
}
InterImpl
package com.itheima.a07;public class InterImpl implements Inter {@Overridepublic void method() {System.out.println("InterImpl中重写的抽象方法");}// 不叫重写public static void show(){System.out.println("InterImpl方法中的静态方法");};
}
Test
package com.itheima.a07;public class Test {public static void main(String[] args) {// 调用接口中的静态方法Inter.show();// 调用实现类中的静态方法InterImpl.show();}
}
JDK9以后的私有方法
InterA
package com.itheima.a08;public interface InterA {public default void show1(){System.out.println("show1方法执行");show3();};public default void show2(){System.out.println("show2方法执行");show3();};//普通私有方法,给默认方法服务private void show3(){System.out.println("记录细节的代码");};public static void show11(){System.out.println("show1方法执行");show4();};public static void show22(){System.out.println("show2方法执行");show4();};//静态私有方法,给静态方法服务private static void show4(){System.out.println("记录细节的代码");};
}
总结