接口是作為系統與外界交互的窗口。
在Java語言中,接口有兩種意思:
一是指概念性的接口,即指系統對外提供的所有服務。類的所有能被外部使用者訪問的方法構成了類的接口;
二是指用interface關鍵字定義的實實在在的接口,也稱為接口類型。它用于明確地描述系統對外提供的所有服務,能夠更加清晰地把系統的實現細節與接口分離。
接口對其成員變量和方法做了許多限制,接口的特征歸納如下:
???? (1)定義接口時,其中訪問權限必須是public的;
????????? public interface A {...}
???? (2)接口中的成員變量默認都是public、static、final類型的,必須被顯式地初始化;
???? (3)接口中的方法默認都是public、abstract類型的;
???? (4)接口中只能包含public、static、final類型的成員變量和public、abstract類型的成員方法。不能在接口中定義實例變量、非抽象的實例方法及靜態方法(接口不允許有具體方法);
????? 如:接口中不能有main()方法。
???? (5)接口沒有構造方法,不能被實例化。
???? (6)一個接口不能實現另一個接口,但它可以繼承多個其他接口;
???? public interface A {???????????? public interface B {
??????? public void methodA();?????????? public void methodB();
???? }??????????????????????????????? }
???? public interface C extends A,B { //接口C是復合接口
??????? public void methodC();
???? }
????? (7)接口必須通過類來實現它的抽象方法。類實現接口的關鍵字為implements
????????? public class AImp implements A {...}
????? (8)與子類繼承父類相似,當類實現了某個接口時,它必須實現接口中所有的抽象方法,否則這個類必須被定義為抽象類;
????? (9)不允許創建接口的實例,但允許定義接口類型的引用變量,該變量引用實現了這個接口的類的實例。
????? (10)一個類只能繼承一個直接的父類,但能實現多個接口。
????????? public class Apple extends Fruit implements A,B,C {...}