Java接口的使用
接口的一般使用
接口的使用與類的使用有些不同。在需要使用類的地方,會直接使用new關鍵字來構建一個類的實例進行應用:ClassA a =new ClassA();
這是正確的 但接口不可以這樣用,因為接口不能直接使用 new 關鍵字來構建實例。
SataHdd sh = new SataHdd();
這是錯誤的,接口在使用的時候要實例化相應的實現類。實現類的格式如下:
訪問修飾符 修飾符 class 類名 extends 父類 implements 多個接口 {
實現方法
}
- 接口必須通過類來實現它的抽象方法,類實現接口的關鍵字為implements。
- 如果一個類不能實現該接口的所有抽象方法,那么這個類必須被定義為抽象方法。
- 不允許創建接口的實例,但允許定義接口類型的引用變量,該變量指向了實現接口的類的實例。
- 一個類只能繼承一個父類,但卻可以實現多個接口。
public class SeagateHdd implements SataHdd,A{
public String readData() {
//希捷硬盤讀取數據
return "數據";
}
public void writeData(String data) {
//希捷硬盤寫入數據
}
}
//三星硬盤
public class SamsungHdd implements SataHdd{
public String readData() {
//三星硬盤讀取數據
return "數據";
}
public void writeData(String data) {
//三星硬盤寫入數據
}
}
//某劣質硬盤,不能寫數據
public abstract class XXHdd implements SataHdd{
public String readData() {
//硬盤讀取數據
return "數據";
}
}
public class Client{
public static void main(String[] args) {
SataHdd sh1=new SeagateHdd(); //初始化希捷硬盤
SataHdd sh2=new SamsungHdd(); //初始化三星硬盤
}
}
接口作為類型使用
接口作為引用類型來使用,任何實現該接口的類的實例都可以存儲在該接口類型的變量中,通過這些變量可以訪問類中所實現的接口中的方法,Java 運行時系統會動態地確定應該使用哪個類中的方法,實際上是調用相應的實現類的方法。示例如下:
public class Test {
public void test1(A a) {
a.doSth();
}
public static void main(String[] args) {
Test t = new Test();
A a = new B();
t.test1(a);
}
}
public interface A {
public int doSth();
}
public class B implements A {
public int doSth() {
System.out.println("now in B");
return 123;
}
}
運行結果:now in B
大家看到接口可以作為一個類型來使用,把接口作為方法的參數和返回類型。