在Java語言中,介面由類別來實現,以便使用介面中的方法。一個類別需要在類別聲明中使用關鍵字implements聲明該類別實作一個或多個介面。如果實現多個按口,請用逗號隔開接口名。
例如:
classAimplementsPrintable,Addable//A類別實作Printable和Addable介面classDogextendsAnimalimplementsEatable,Sleepable//Animal的Dog子類別實作Eatable和Sleepable介面
如果一個非抽象類別實作了某個接口,那麼這個類別必須重寫這個接口中的所有方法。
注意:由於介面中的方法一定是public abstract方法,所以類別在重寫介面方法時不僅要去掉abstract修飾符,還要給出方法體,而且方法的存取權限一定要明顯地用public來修飾。
如果實作介面的非抽象類別實作了該介面中的方法,就相當於給出了方法的具體行為功能。使用者也可以自訂接口,一個Java來源檔案可以由類別和接口組成。
如果一個類別聲明實作一個接口,但沒有重寫接口中的所有方法,那麼這個類別必須是抽象類,也就是說,抽象類別既可以重寫接口中的方法,也可以直接擁有接口中的方法。
細節說明:
程式可以用介面名稱存取接口中的常數,但是如果一個類別實作了接口,那麼該類別可以直接在類別中使用該接口中的常數。
定義接口時,如果關鍵字interface前面加上public關鍵字,就稱為public接口,public接口可以被任何一個類實現;如果不加上public關鍵字,就稱作友好接口,友好接口可以被與該介面在同一包中的類別實作。
如果父類別實作了某個接口,那麼子類別也就自然而然地實作了該接口,也就是說,子類別不必再使用關鍵字implements聲明實作這個接口。
介面也是可以被繼承的,也就是可以透過關鍵字extends聲明一個介面是另一個介面的子介面。由於介面中的方法和常數都是共有的,所以子介面將繼承父介面中的全部方法和常數。
注意:Java提供的介面都在對應的套件中,透過import語句不僅可以引入套件中的類,也可以引入套件中的介面。
例如:
importjava.io.*;//此時不僅引入了java.io套件中的類,還引入了該套件中的接口