1. 程式人生 > >201711671118《Java程式設計》第六章總結

201711671118《Java程式設計》第六章總結

6.1介面

①使用關鍵字interface來定義一個介面。介面的定義與類的定義很相似:包含介面宣告和介面體。通過import語句可以引入包中的介面。

②介面體:介面體中包含常量的宣告和抽象方法兩個部分。介面題沒有變數,沒有普通方法,只有常量和抽象方法。

③常量:訪問許可權必須為public,而且是static常量。如public static final int MAX=100;

其中public、final和static修飾符可以省略,即該宣告等價於int MAX=100

④抽象方法:訪問許可權必須為public。如public abstract void add();其中public、abstract可以省略,等價於void add();

6.2 實現介面

①使用關鍵字implements宣告該類實現一個或多個介面。如class A implements B。

②如果一個非抽象類實現某個介面,那麼這個類必須重寫這個介面的所有方法,重寫的方法去掉abstract,並且一定為public的(重寫不能降低訪問許可權)。

③如果一個類宣告實現了一個介面,但沒有重寫介面中的所有方法,那麼這個類必須是抽象類。

④程式可以用介面名訪問介面的常量,但是如果一個類實現了介面,那麼該類可以直接在類體中使用介面中的常量。

⑤如果一個類不加public修飾,就稱為友好介面,友好介面可以被與介面同一個包中的類實現。

⑥如果父類實現了某個介面,那麼子類也就自然實現了該介面,子類不必再顯式地使用implements宣告實現該介面。

⑦介面可以被繼承,即可以通過關鍵詞extends宣告一個介面是另一個介面的子介面,由於介面中的方法和常量都是public的,子介面將繼承父介面的全部方法和常量。

6.4介面回撥

①用介面宣告的變數稱為引用型變數,介面屬於引用型變數,介面變數可以存放實現該介面的類的例項的引用,即存放物件的引用。

②介面回撥是指:可以把實現某一介面的類建立的物件的引用賦值給該介面宣告的介面變數,那麼該介面變數就可以呼叫被類實現的介面方法。實際上,當介面變數呼叫被類實現的介面方法時,就是通知相應的物件呼叫這個方法。

③介面無法呼叫類中的其他非介面方法。

④介面引數:如果一個方法的引數是介面型別,就可以將任何實現該介面的類的例項的引用賦值給該介面引數,那麼介面引數就可以回撥類實現的介面方法。

6.8 abstract類與介面的比較

①介面中可以有常量,不能有變數,而abstract類中可以有常量,也可以有變數。

②abstract類也可以有非abstract方法,介面不可以。