標籤:首字母 預設 聲明 java 介面的基本文法 介面 執行個體化 而且 解釋
介面的定義:
使用interface來定義一個介面。介面定義與類的定義類似,也是分為介面的聲明和介面體,其中介面體由變數定義和方法定義兩部分組成,定義介面的基本文法如下:
[修飾符] interface 介面名 [extends 父介面名列表]{ [public] [static] [final] 變數; [public] [abstract] 方法;}
修飾符:選擇性參數,用於指定介面的存取權限,可選值為public。如果省略則使用預設的存取權限。
介面名:必選參數,用於指定介面的名稱,介面名必須是合法的Java標識符。一般情況下,要求首字母大寫。
extends父介面名列表:選擇性參數,用於指定要定義的介面繼承於哪個父介面。當使用extends關鍵字時,父介面名為必選參數。
方法:介面中的方法只有定義而沒有被實現。
注意:介面名一般都有一個不成文的規定,即第一個字母為I。
例:
public interface IJiSuan { public void QiuMianJi(); public void QiuZhouChang();}
public interface IXingZhuang { public void Hua();}
public abstract class SiBianXing implements IJiSuan, IXingZhuang { public void Hua(){ System.out.println("正在畫一個四邊形"); }}
public class JuXing extends SiBianXing { private int a; private int b; public JuXing(int a,int b){ this.a = a; this.b = b; } @Override public void QiuMianJi() { double s = a*b; System.out.println(s); } @Override public void QiuZhouChang() { double c = a+b+a+b; System.out.println(c);; } public void Hua(){ System.out.println("正在畫一個矩型"); }}
可以對比看出
介面用關鍵字interface聲明。
介面的地位等同於class,介面中的所有方法都是抽象方法。
介面中在定義方法的時候,可以使用abstract關鍵字,也可以省略abstract關鍵字,(大多數時候都是省略的),方法仍是抽象的,不能有實現的花括弧。
介面和抽象類別的功能類似,介面也不能執行個體化,可以將介面看作是一種特殊的抽象類別(全是抽象方法)。
介面的多態用法和抽象類別也類似,介面類型的引用可以指向實現了這個介面的類的對象。
提到介面,就會聯想到抽象,此時大家都會感覺介面和抽象很相似,那麼他們有什麼區別?
1.介面本身就是抽象的,所以他的方法必須全部都是抽象的方法,但是抽象類別中的方法可以是抽象的,也可以是具體的,詳見前一篇內容對抽象類別的解釋。
2.一個類可以實現介面,(類似於父子類之中用extends繼承)採用關鍵字implement。大家都知道Java是單繼承的,但是一個類可以實現多個介面,如上文中寫的SiBianXing就實現了IJiSuan, IXingZhuang兩個介面。
3.如果一個類實現了一個介面或者多個介面,如果這個類是抽象類別,那麼這個類就不用實現介面的全部內容,如上例中SiBianXing定義的就是一個abstract抽象類別,所以不用實現IJiSuan, IXingZhuang兩個介面中所有的內容。
4.同理於3,如果一個類實現了一個介面或者多個介面,如果這個類不是抽象類別,是一個具體類的話,那麼這個類就必須實現介面的全部內容,如上例中的JuXing,雖然JuXing是繼承的SiBianXing,但是SiBianXing是一個抽象類別,並沒有實現所有介面的內容,而且JuXing沒有定義abstract,是一個具體類,那麼JuXing就必須把IJiSuan, IXingZhuang兩個介面中所有的內容全部實現,也就是如上例中所寫。
Java介面總結