接口
兩個實體之間通信方式的規範,將內部操作和外部溝通分離,使其任意一方都能實現修改內部而不影響外界其他實體與其交互的方式。接口使用關鍵字interface聲明,一般會在接口名前加上大寫的I作爲前綴
語法格式:[public] interface I接口名{}
接口中的屬性:只能是常量,默認不寫:public static final修飾的,寫也只能寫這些關鍵字中的一個或多個,不能寫其他的
接口中的方法:只能是抽象方法,默認不寫:public abstract 修飾的,寫也只能寫這些關鍵字中的一個或多個,不能寫其他的
接口中不能包含構造方法
接口支持多實現,一個類實現多個接口時,多個接口之間用英文格式的逗號隔開
子類:實現接口的語法格式:
class 子類名 implements 接口名{
//可以有自己的屬性和方法,但必須重寫父接口中定義的方法
}
例如:U盤和電腦之間使用USB接口通信,任何品牌任何容量的U盤,只要實現了USB接口,都可以與電腦通信,無論是哪臺電腦只要有USB接口也都能與同一U盤通信
實例:
package _interface;
/**
* 創建接口USB
* @author 學霸聯盟 - 趙燦
*/
public interface IUSB {
// 聲明一個工作的方法
public void work();
}
package _interface;
/**
* 創建U盤類,並實現USB接口
* @author 學霸聯盟 - 趙燦
*/
public class UDisk implements IUSB {
// 必須實現接口中的方法
public void work() {
System.out.println("U盤通過USB接口和外界通信");
}
}
package _interface;
/**
* 創建手機類,也實現USB接口
* @author 學霸聯盟 - 趙燦
*/
public class Phone implements IUSB {
// 必須實現接口中的方法
public void work() {
System.out.println("手機也可以通過USB接口和外界通信");
}
}
package _interface;
/**
* 創建計算機類
* @author 學霸聯盟 - 趙燦
*/
public class Computer {
// 聲明一個連接外部設備的方法,那麼這個方法通過什麼連接外部設備呢?
// 通過USB接口連接外部設備,所以這裏給這個方法加上USB接口作爲參數
public void connectExternalEquipment(IUSB usbEquipment) {
// 使用USB接口開始工作
usbEquipment.work();
}
}
package _interface;
/**
* 創建測試類
* @author 學霸聯盟 - 趙燦
*/
public class Test {
public static void main(String[] args) {
// 創建一個電腦對象
Computer computer = new Computer();
// 創建一個實現了USB接口的設備對象,這裏是一個U盤對象
IUSB usbEquipment1 = new UDisk();
// 創建一個實現了USB接口的設備對象,這裏是一個手機對象
IUSB usbEquipment2 = new Phone();
// 使用計算機調用連接外部設備的方法
// 至於傳入的是哪個對象計算機並不關心,只要是實現USB接口的對象即可
// 傳入的對象是誰,就調用誰裏面的work方法
computer.connectExternalEquipment(usbEquipment1);
computer.connectExternalEquipment(usbEquipment2);
}
}
輸出結果:
U盤通過USB接口和外界通信
手機也可以通過USB接口和外界通信
接口和接口之間只能是繼承,接口不能繼承類。
package _interface._interface;
public interface IFather {}
package _interface._interface;
/**
* 子接口只能使用關鍵字extends繼承另一個接口
* 而不能使用implements實現另一接口
* @author 學霸聯盟 - 趙燦
*/
public interface ISon extends IFather{}
因爲接口中的方法只能是抽象方法,而子類中又必須實現父類中的抽象方法,所以它的作用是對子類的一種規範,規定子類中至少要有哪些方法。
優點:可以多實現,代碼規範性強
缺點:不能提供普通的方法,這就導致即使子類中出現共性的方法也無法服用代碼