java介面關鍵字
⑴ java實現介面的關鍵字是________
implements
/*實現Runnable借口*/{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
}
@Override/*覆蓋Runnable借口的run()方法實現多線程*/
publicvoidrun(){
}
}
⑵ JAVA實現介面的關鍵字是什麼
Java中定義介面的關鍵字是什麼?. Java中定義介面的關鍵字是「interface」。. 「interface」是面向對象編程語言中介面操作的關鍵字,功能是把所需成員組合起來,用來裝封一定功能的集合。. 介面不能直接實例化,也不能包含成員的任何代碼,只定義成員本身。.
⑶ java如何寫一個介面
非常簡單,基礎語法:
public interface 介面名 {
常量定義;
抽象方法定義;
default 方法定義;
}
即使你在介面中不定義任何方法,也是可以的。
⑷ java怎麼定義一個介面
java中介面的定義和介面的實現
1.介面的定義
使用interface來定義一個介面。介面定義同類的定義類似,也是分為介面的聲明和介面體,其中介面體由常量定義和隱帆方法定義兩部分組成。定義介面的基本格式如下:
[修飾符] interface 介面名 [extends 父介面名列表]{
[public] [static] [final] 常量;
[public] [abstract] 方法;
}
修飾符:可選,用於指定介面的訪問許可權,可選值為public。如果省略則使用默認的訪問許可權。
介面名:必選參數,用於指定介面的名稱,介面名必須是合法的Java標識符。一般情況下,要求首字母大寫。
extends 父介面名列表:可選參數,用於指定要定義的介面繼承於哪個父介面。當使用extends關鍵字時,父介面名為必選參數。
方法:介面中的方法只有定義而沒有被實現。
例如,定義一個用於計算的介面,在該介面中定義了一個常量PI和兩個方法,具體代碼如下:
1 public interface CalInterface
2 {
3 final float PI=3.14159f;//定義用於表示圓周率的常量PI
4 float getArea(float r);//定義一個用於計算面積的方法getArea()
5 float getCircumference(float r);//定義一個用於計算周長的方法getCircumference()
6 }
注意:
與Java的類文件一樣,介面文件的文件名必須與介面名相同。
2.介面的實現
介面在定義後,就可以在類中實現該介面。在類中實現介面可以使用關鍵字implements,其基本格好橡式如下:
[修飾符] class <類名> [extends 父類名] [implements 介面列表]{
}
修飾符:可選參數,用於指定類的訪問許可權,可選值為public、abstract和final。
類名:必選參數,用於指定類的名稱,類名必須是合法的Java標識符。一般情況下,要求首字母大寫。
extends 父類名:可選參數,用於指定要定義的類繼承於哪個父類。當使用extends關鍵字時,父類名為必選參數。
implements 介面列表:可選參數,用於指定該類實現的是哪些介面。當使用implements關鍵字時,介面列表為必選參數。當介面列表中存在多個介面名時,各個介面名之間使用逗號分隔。
在類中實現介面時,方法的名字、返回值類型、參數的個數及類型必須與介面中的完全一致,並且必須實現介面中的所有方法。例如,編寫一個名稱為Cire的類,該類實現5.7.1節中定義的介面Calculate,具體代碼如下:
1 public class Cire implements CalInterface
2 {
3 public float getArea(float r)
4 {
5 float area=PI*r*r;//計算圓面積並賦值給變數area
6 return area;//返回計算後的圓面積
7 }
8 public float getCircumference(float r)
9 {
10 float circumference=2*PI*r; //計算圓周長並賦值給變數circumference
11 return circumference; //返回計算後的圓周長
12 }
13 public static void main(String[] args)
14 {
15 Cire c = new Cire();
16 float f = c.getArea(2.0f);
17 System.out.println(Float.toString(f));
18 }
19 }
在類的繼承中,只能做單重繼承,而實現介面時,一次則可以實現多個介面,每個介面間使用逗號「,」分隔。這時就可能出現常量或方法名沖突的情況,解決該問題時,如果常量沖突,則需要明確指定常量的介面,這可以通過「介面名.常量」實現。如果出灶襪雹現方法沖突時,則只要實現一個方法就可以了。下面通過一個具體的實例詳細介紹以上問題的解決方法。
⑸ java程序中定義介面所使用的關鍵字是什麼,
Java中介面使用interface關鍵字來聲明
現實中也有很多介面的實例,比如說串口電腦硬碟,SerialATA委員會指定了SerialATA2.0規范,這種規范就是介面。SerialATA委員會不負責生產硬碟,只是指定通用的規范。
希捷、日立、三星等生產廠家會按照規范生產符合介面的硬碟,這些硬碟就可以實現通用化,如果正在用一塊160G日立的串口硬碟,現在要升級了,可以購買一塊320G的希捷串口硬碟,安裝上去就可以繼續使用了。
下面的代碼可以模擬SerialATA委員會定義以下串口硬碟介面://串列硬碟介面publicinterfaceSataHdd{//連接線的數量publicstaticfinalintCONNECT_LINE=4;//寫數據publicvoidwriteData(Stringdata);//讀數據publicStringreadData();}
注意:介面中聲明的成員變數默認都是publicstaticfinal的,必須顯示的初始化。因而在常量聲明時可以省略這些修飾符。
介面是若干常量和抽象方法的集合,目前看來和抽象類差不多。確實如此,介面本就是從抽象類中演化而來的,因而除特別規定,介面享有和類同樣的「待遇」。比如,源程序中可以定義多個類或介面,但最多隻能有一個public的類或介面,如果有則源文件必須取和public的類和介面相同的名字。和類的繼承格式一樣,介面之間也可以繼承,子介面可以繼承父介面中的常量和抽象方法並添加新的抽象方法等。
但介面有其自身的一些特性,歸納如下。
1)介面中只能定義抽象方法,這些方法默認為publicabstract的,因而在聲明方法時可以省略這些修飾符。試圖在介面中定義實例變數、非抽象的實例方法及靜態方法,都是非法的。例如:publicinterfaceSataHdd{//連接線的數量publicintconnectLine;//編譯出錯,connectLine被看做靜態常量,必須顯式初始化//寫數據protectedvoidwriteData(Stringdata);//編譯出錯,必須是public類型//讀數據publicstaticStringreadData(){//編譯出錯,介面中不能包含靜態方法return"數據";//編譯出錯,介面中只能包含抽象方法,}}
3)介面中沒有構造方法,不能被實例化。
4)一個介面不實現另一個介面,但可以繼承多個其他介面。介面的多繼承特點彌補了類的單繼承。例如://串列硬碟介面,B{//連接線的數量publicstaticfinalintCONNECT_LINE=4;//寫數據publicvoidwriteData(Stringdata);//讀數據publicStringreadData();}interfaceA{publicvoida();}interfaceB{publicvoidb();}
為什麼使用介面
大型項目開發中,可能需要從繼承鏈的中間插入一個類,讓它的子類具備某些功能而不影響它們的父類。例如A->B->C->D->E,A是祖先類,如果需要為C、D、E類添加某些通用的功能,最簡單的方法是讓C類再繼承另外一個類。但是問題來了,Java是一種單繼承的語言,不能再讓C繼承另外一個父類了,只到移動到繼承鏈的最頂端,讓A再繼承一個父類。這樣一來,對C、D、E類的修改,影響到了整個繼承鏈,不具備可插入性的設計。
介面是可插入性的保證。在一個繼承鏈中的任何一個類都可以實現一個介面,這個介面會影響到此類的所有子類,但不會影響到此類的任何父類。此類將不得不實現這個介面所規定的方法,而子類可以從此類自動繼承這些方法,這時候,這些子類具有了可插入性。
我們關心的不是哪一個具體的類,而是這個類是否實現了我們需要的介面。
介面提供了關聯以及方法調用上的可插入性,軟體系統的規模越大,生命周期越長,介面使得軟體系統的靈活性和可擴展性,可插入性方面得到保證。
介面在面向對象的Java程序設計中佔有舉足輕重的地位。事實上在設計階段最重要的任務之一就是設計出各部分的介面,然後通過介面的組合,形成程序的基本框架結構。介面的使用
介面的使用與類的使用有些不同。在需要使用類的地方,會直接使用new關鍵字來構建一個類的實例,但介面不可以這樣使用,因為介面不能直接使用new關鍵字來構建實例。
介面必須通過類來實現(implements)它的抽象方法,然後再實例化類。類實現介面的關鍵字為implements。
如果一個類不能實現該介面的所有抽象方法,那麼這個類必須被定義為抽象方法。
不允許創建介面的實例,但允許定義介面類型的引用變數,該變數指向了實現介面的類的實例。
一個類只能繼承一個父類,但卻可以實現多個介面。
實現介面的格式如下:
修飾符class類名extends父類implements多個介面{
實現方法
}
請看下面的例子:importstaticjava.lang.System.*;publicclassDemo{publicstaticvoidmain(String[]args){SataHddsh1=newSeagateHdd();//初始化希捷硬碟SataHddsh2=newSamsungHdd();//初始化三星硬碟}}//串列硬碟介面interfaceSataHdd{//連接線的數量publicstaticfinalintCONNECT_LINE=4;//寫數據publicvoidwriteData(Stringdata);//讀數據publicStringreadData();}//維修硬碟介面interfacefixHdd{//維修地址Stringaddress="北京市海淀區";//開始維修booleandoFix();}//希捷硬碟,fixHdd{//希捷硬碟讀取數據publicStringreadData(){return"數據";}//希捷硬碟寫入數據publicvoidwriteData(Stringdata){out.println("寫入成功");}//維修希捷硬碟publicbooleandoFix(){returntrue;}}//三星硬碟{//三星硬碟讀取數據publicStringreadData(){return"數據";}//三星硬碟寫入數據publicvoidwriteData(Stringdata){out.println("寫入成功");}}//某劣質硬碟,不能寫數據{//硬碟讀取數據publicStringreadData(){return"數據";}}
介面作為類型使用
介面作為引用類型來使用,任何實現該介面的類的實例都可以存儲在該介面類型的變數中,通過這些變數可以訪問類中所實現的介面中的方法,Java運行時系統會動態地確定應該使用哪個類中的方法,實際上是調用相應的實現類的方法。
示例如下:publicclassDemo{publicvoidtest1(Aa){a.doSth();}publicstaticvoidmain(String[]args){Demod=newDemo();Aa=newB();d.test1(a);}}interfaceA{publicintdoSth();}classBimplementsA{publicintdoSth(){System.out.println("nowinB");return123;}}
運行結果:
nowinB
大家看到介面可以作為一個類型來使用,把介面作為方法的參數和返回類型。