溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java接口的定義和實現(xiàn)

發(fā)布時間:2020-05-27 15:42:54 來源:億速云 閱讀:210 作者:鴿子 欄目:編程語言

Java接口
定義類要用class關鍵字,定義接口要用interface關鍵字。
接口是常量和抽象方法的集合。接口中的數(shù)據(jù)成員,不管有沒有用修飾符“public”、“static”或“final”修飾,都是public static final的,并且必須顯示的初始化。接口中的方法,不管有沒有用修飾符“public”或“abstract”修飾,都是public abstract的,并且必須不帶方法體。
源程序中可以定義多個類或接口,但最多只能有一個public的類或接口,如果有則源文件必須取和public的類和接口相同的名字。
接口可以繼承,子接口可以繼承父接口中的常量和抽象方法并添加新的抽象方法等。
接口沒有構造方法,不能被實例化。

接口中的方法必須由類來實現(xiàn),定義一個實現(xiàn)接口的類,格式為:
修飾符 class 類名 extends 父類名 implements 接口名1,接口名2,…,接口名n {
實現(xiàn)方法
}
如果類不能實現(xiàn)implements關鍵字后面所列出的所有接口中所有的方法,則這個類必須用abstract修飾而成為抽象類。
一個類只能繼承一個父類,但卻可以實現(xiàn)多個接口。
雖不允許創(chuàng)建接口的實例,但允許定義接口類型的變量,用來引用實現(xiàn)接口的類的實例。
例子:
import static java.lang.System.*;
public class Demo{
public static void main(String[] args) {
SataHdd sh2=new SeagateHdd(); //初始化希捷硬盤
SataHdd sh3=new SamsungHdd(); //初始化三星硬盤
}
}
//串行硬盤接口
interface SataHdd{
public static final int CONNECT_LINE=4;//連接線的數(shù)量,也可寫成int CONNECT_LINE=4;
public abstract void writeData(String data);//寫數(shù)據(jù),也可寫成void writeData(String data);
public abstract String readData();//讀數(shù)據(jù),也可寫成String readData();
}
// 維修硬盤接口
interface fixHdd{
String address = "北京市海淀區(qū)";// 維修地址
boolean doFix();// 開始維修
}
//希捷硬盤
class SeagateHdd implements SataHdd, fixHdd{
public String readData(){return "數(shù)據(jù)";}//希捷硬盤讀取數(shù)據(jù)
public void writeData(String data){out.println("寫入成功");}//希捷硬盤寫入數(shù)據(jù)
public boolean doFix(){return true;}// 維修希捷硬盤
}
//三星硬盤
class SamsungHdd implements SataHdd{
public String readData(){return "數(shù)據(jù)";}//三星硬盤讀取數(shù)據(jù)  
public void writeData(String data){out.println("寫入成功");}//三星硬盤寫入數(shù)據(jù)
}
//某劣質硬盤,不能寫數(shù)據(jù)
abstract class XXHdd implements SataHdd{
public String readData(){return "數(shù)據(jù)";}//硬盤讀取數(shù)據(jù)
}

一個接口不實現(xiàn)另一個接口,但可以繼承多個其他接口。接口的多繼承特點彌補了類的單繼承:
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();
}

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI