1. 程式人生 > 其它 >介面的私有方法定義與使用

介面的私有方法定義與使用

/*
問題描述:
我們需要抽取一個公有方法,用來解決兩個預設方法之間重複程式碼的問題。
但是這個共有方法不應該讓實現類使用,應該是私有化的。

解決方案:
從java 9開始,介面當中允許定義私有方法。
1、普通私有方法,解決多個預設方法之間重複程式碼問題
格式:
private 返回值型別 方法名稱(引數列表){
方法體


2、靜態私有方法,解決多個靜態方法之間重複程式碼問題
格式:
private static 返回值型別 方法名稱(引數列表){
方法體

*/
public interface MyInterfacePrivateA {
public default void methodDefault1(){
System.out.println("預設方法1");
methodCommon();
}

public default void methodDefault2(){
System.out.println("預設方法2");
methodCommon();
}

private void methodCommon(){
System.out.println("AAA");
System.out.println("BBB");
System.out.println("CCC");
}
}
=======================================
public class MyInterfacePrivateAImpl implements MyInterfacePrivateA {
public void methodAnother(){
//直接訪問到了介面中的預設方法,這樣是錯誤的!
// methodCommon();
}
}
===========================================
===========================================

public interface MyInterfacePrivateB {
public static void methodStatic1(){
System.out.println("靜態方法1");
methodStaticCommon();
}

public static void methodStatic2(){
System.out.println("靜態方法2");
methodStaticCommon();
}
private static void methodStaticCommon(){
System.out.println("AAA");
System.out.println("BBB");
System.out.println("CCC");
}
}
===========================================

public class Demo04Interface {
public static void main(String[] args) {
MyInterfacePrivateB.methodStatic1();
MyInterfacePrivateB.methodStatic2();
//錯誤寫法!!
// MyInterfacePrivateB.methodStatiCommon();
}

}