接口的私有方法定义与接口的私有方法使用
接口的私有方法定义
私有方法的使用
私有方法:只有默认方法可以调用。
私有静态方法:默认方法和静态方法可以调用。
如果一个接口中有多个默认方法,并且方法中有重复的内容,那么可以抽取出来,封装到私有方法中,供默认方法
去调用。从设计的角度讲,私有的方法是对默认方法和静态方法的辅助。同学们在已学技术的基础上,可以自行测
试。
接口的私有方法使用
定义接口:
package day01.quanbu; /* 间题描述; 我们需要抽取一个共有方法,用来解决两个默认方法之间重复代码的问题但是这个共有方法不应该让实现类使用,应该是私有化的。 解决方案; 从Java 9开始,接口当中允许定义私有方法。 1.-普通私有方法,解决多个默认方法之间重复代码问题格式: private返回值类型方法名称(参数列表){方法体 ) 2.静态私有方法,解决多个静态方法之问重复代码问题格式: private static返回值类型方法名称(参数列表){ 方法体 */ public interface MyInterfacePrivateA{ public default void methodDefe1(){ System.out.println("默认方法1"); System.out.println("AAA"); System.out.println("BBB"); System.out.println("CCC"); } public default void methodDefe2(){ System.out.println("默认方法2"); System.out.println("AAA"); System.out.println("BBB"); System.out.println("CCC"); } public default void methodCommon(){ System.out.println("AAA"); System.out.println("BBB"); System.out.println("CCC"); } }
package day01.quanbu; public interface MyInterfacePrivateB { public static void methodDefault1() { System.out.println("静态方法1"); methodStastic(); } public static void methodDefault2() { System.out.println("静态方法2"); methodStastic(); } public static void methodStastic(){ System.out.println("AAA"); System.out.println("BBB"); System.out.println("CCC"); } }
package day01.quanbu; public class MyInterfacePrivateAImpl implements MyInterfacePrivateA { public void methodAnother() { // 直接访问到了接口中的默认方法,这样是错误的! // methodCommon(); } }
package day01.quanbu; public class Demo04Interface { public static void main(String[] args) { MyInterfacePrivateB.methodDefault1(); MyInterfacePrivateB.methodDefault2(); //错误写法 // MyInterfacePrivateB.methodStastic(); } }