瘋狂Java講義:P200接口
瘋狂Java講義:P200接口
接口 Output?
package lee;
public interface Output {//接口里定義的成員變量只能是常量int MAX_CACHE_LINE=50;//接口里定義的只能是public的抽象方法void out();void getData(String msg);//在接口中定義默認方法,需要使用defaultdefault void print(String... msgs) {for (var msg :msgs){System.out.println(msg);}}default void test(){System.out.println("默認的test()方法:default test() method ");}//接口中定義類方法,使用staticstatic String staticTest(){return "接口里面的類方法(靜態方法):the static method in the interface Output";}//定義私有方法private void foo(){System.out.println("私有的foo()方法:the private foo() method");}//定義私有靜態方法private static void bar(){System.out.println("私有的靜態方法bar()方法:the private static bar() method");}}
接口Product
package lee;
public interface Product {int getProduceTime();
}
類Printer 實現了 以上兩個接口
import lee.Output;public class Printer implements lee.Output,lee.Product {private String[] printData = new String[lee.Output.MAX_CACHE_LINE];//50個元素//用來記錄當前需要打印的作業數private int dataNum = 0;public void out() {//只要還有作業就繼續打印while (dataNum > 0) {System.out.println("打印機打印:" + printData[0]);//把作業隊列整體前移一位,并將剩下的作業書減1System.arraycopy(printData, 1, printData, 0, --dataNum);//從指定的源數組拷貝一個數組,從指定的位置開始,// 拷貝到指定數組的指定位置處,拷貝的數量由第四個參數length來決定}}public void getData(String msg) {if (dataNum >= Output.MAX_CACHE_LINE) {System.out.println("輸出隊列已滿添加失敗");} else {//把打印數據添加到隊列里,已保存數據的數量加1printData[dataNum ++] = msg;}}public int getProduceTime(){return 45;}public static void main(String[] args){//創建一個Printer對象,當成Output 使用Output o=new Printer();o.getData("輕量級JavaEE企業應用實戰");o.getData("瘋狂Java講義");o.out();o.getData("瘋狂Android講義");o.getData("瘋狂Ajax講義");o.out();//調用Output接口中定義的默認方法o.print("孫悟空","豬八戒","白骨精");o.test();//創建一個Printer對象,當成Product使用lee.Product p=new Printer();System.out.println(p.getProduceTime());//所有接口類型的引用變量都可直接賦給Object類型的變量Object obj=p;}}