Java接口
定義類要用class關鍵字,定義接口要用interface關鍵字。
接口是常量和抽象方法的集合。接口中的資料成員,不管有沒有用修飾符“public”、“static”或“final”修飾,都是public static final的,并且必須顯示的初始化。接口中的方法,不管有沒有用修飾符“public”或“abstract”修飾,都是public abstract的,并且必須不帶方法體。
源程式中可以定義多個類或接口,但最多隻能有一個public的類或接口,如果有則源檔案必須取和public的類和接口相同的名字。
接口可以繼承,子接口可以繼承父接口中的常量和抽象方法并添加新的抽象方法等。
接口沒有構造方法,不能被執行個體化。
接口中的方法必須由類來實作,定義一個實作接口的類,格式為:
修飾符 class 類名 extends 父類名 implements 接口名1,接口名2,…,接口名n {
實作方法
}
如果類不能實作implements關鍵字後面所列出的所有接口中所有的方法,則這個類必須用abstract修飾而成為抽象類。
一個類隻能繼承一個父類,但卻可以實作多個接口。
雖不允許建立接口的執行個體,但允許定義接口類型的變量,用來引用實作接口的類的執行個體。
例子:
import static java.lang.System.*;
public class Demo{
public static void main(String[] args) {
SataHdd sh1=new SeagateHdd(); //初始化希捷硬碟
SataHdd sh2=new SamsungHdd(); //初始化三星硬碟
//串行硬碟接口
interface SataHdd{
public static final int CONNECT_LINE=4;//連接配接線的數量,也可寫成int CONNECT_LINE=4;
public abstract void writeData(String data);//寫資料,也可寫成void writeData(String data);
public abstract String readData();//讀資料,也可寫成String readData();
// 維修硬碟接口
interface fixHdd{
String address = "北京市海澱區";// 維修位址
boolean doFix();// 開始維修
//希捷硬碟
class SeagateHdd implements SataHdd, fixHdd{
public String readData(){return "資料";}//希捷硬碟讀取資料
public void writeData(String data){out.println("寫入成功");}//希捷硬碟寫入資料
public boolean doFix(){return true;}// 維修希捷硬碟
//三星硬碟
class SamsungHdd implements SataHdd{
public String readData(){return "資料";}//三星硬碟讀取資料
public void writeData(String data){out.println("寫入成功");}//三星硬碟寫入資料
//某劣質硬碟,不能寫資料
abstract class XXHdd implements SataHdd{
public String readData(){return "資料";}//硬碟讀取資料
一個接口不實作另一個接口,但可以繼承多個其他接口。接口的多繼承特點彌補了類的單繼承:
public interface SataHdd extends A,B{
public static final int CONNECT_LINE = 4;
public void writeData(String data);
public String readData();
interface A{
public void a();
interface B{
public void b();
喜歡這樣文章的可以關注我,我會持續更新,你們的關注是我更新的動力!需要更多java學習資料的也可以私信我!
祝關注我的人都:身體健康,财源廣進,福如東海,壽比南山,早生貴子,從不掉發!