一、接口的概念與定義
首先考慮一個簡單的接口的定義:
public interface Output{ int MAX_LINE = 40; void out(); void getData(String msg);}
int MAX_LINE = 40;public static final int MAX_LINE = 40;
二、接口的繼承
考慮如下代碼:
1 interface A 2 { 3 int PROP_A = 5; 4 void testA(); 5 } 6 interface B 7 { 8 int PROP_B = 6; 9 void testB();10 }11 interface C extends A, B12 {13 int PROP_C = 7;14 void testC();15 }16 17 public class myJavaTest18 {19 public static void main(String[] args)20 {21 System.out.println(C.PROP_A);22 System.out.println(C.PROP_B);23 System.out.println(C.PROP_C);24 25 }26 }
輸出:
5
6
7
三、接口的實現和定義
考慮如下程序:
1 interface Output 2 { 3 int MAX_LINE = 4; 4 void out(); 5 void getData(String msg); 6 } 7 8 interface Product 9 {10 int getProductTime();11 }12 13 //實現簡單的打印作業14 public class Printer implements Output, Product15 {16 private String[] printData = new String[MAX_LINE];17 private int dataNum = 0; // 記錄需要打印的作業數18 19 public void out()20 {21 while (dataNum > 0)22 {23 System.out.println("打印機打印" + printData[0]);24 25 //把作業隊列整體前移一位,并將剩下的作業數減126 System.arraycopy(printData, 1, printData, 0, --dataNum);27 }28 29 }30 31 @Override32 public int getProductTime() {33 // TODO Auto-generated method stub34 return 45;35 }36 37 @Override38 public void getData(String msg) 39 {40 if (dataNum >= MAX_LINE)41 {42 System.out.println("輸出隊列已滿,添加失敗");43 }44 else45 {46 //把打印數據添加到隊列里,作業數加147 printData[dataNum++] = msg;48 } 49 }50 public static void main(String[] args)51 {52 //創建一個Printer對象,當成Output使用53 Output O = new Printer();54 O.getData("123");55 O.getData("456");56 O.getData("789");57 O.getData("ABC");58 O.getData("def");59 O.out();60 //創建一個Printer對象,當成Product使用61 Product P = new Printer();62 System.out.println(P.getProductTime());63 }64 }
輸出:
輸出隊列已滿,添加失敗打印機打印123打印機打印456打印機打印789打印機打印ABC45
[修飾符] class 類名 extends 父類 implements 接口1, 接口2..{ 類體部分 }
implements是表明這個類實現接口的關鍵字,一個類可以實現多個接口,多個接口之間用逗號隔開,如上述程序14行所示
上述程序用類Printer實現了Output接口和Product接口,于是,Printer對象既可以賦給Output變量(53行)也可以賦給Product變量(61行),好像Printer類既是Output類的子類,也是Product類的子類,這就是傳說中的Java的模擬多繼承。
新聞熱點
疑難解答