天天看點

重新認識Java(10)————接口

接口可以了解為一種特殊的類,

class: 定義類

interface :定義接口

接口:不屬于繼承體系,是表現出某一個對象擴充出的功能

成員:

  1. 常量 :public  static  final
  2. 抽象方法: public abstract

 由于接口中的成員是固定的,并且修飾符也是固定的,如果漏寫了某個修飾符,沒有關系,編譯器自動補全。

特點:

1.接口不能執行個體化

2.接口應該有子類,子類實作(implements)接口,子類如果想要能建立對象,必須實作所有的抽象方法,否則子類還是一個抽象類。

3.接口支援多态,父類型接口引用指向實作類對象

類-----類:單繼承

類-----接口:多實作

接口-------接口:多繼承

class A  extends B implements C{}

類A繼承了B同時實作了C,B和C沒有關系

class A extends B{}

class B  implements C{}

類A繼承了B,B實作了C,A-->B--->C

接口使用總結:

  1. 接口可以描述事物不屬于繼承體系中的擴充的功能;
  2. 接口可以定義規則

接口好處:

  1. 支援多态,提高了代碼的擴充性
  2. 彌補了java中的單繼承特點,接口與接口間多繼承,類與接口可以多實作

接口和抽象類的差別:

1從聲明上:

            (1)抽象類是一個類,使用class聲明,還需要使用abstract修飾

            (2)接口不是一個類,使用interface聲明

2.從能夠書寫的成員上看:

            (1)抽象類是一個類,可以書寫類中可以書寫的成員,和抽象函數。

            (2)接口隻能書寫成員變量和抽象函數,而且修飾符是固定的。

3.從有無構造函數上看;

               (1)抽象類必須有構造函數

               (2)接口沒有構造函數

4.從作用上看:

                 (1)抽象類是父類,用來描述所有子類的共性資訊的,隻是描述的有些功能是不具體的。

                 (2)接口是用來描述不屬于繼承體系的擴充功能的,還可以定義規則。

5.繼承關系上:

              (1)抽象類和類之間是繼承關系,隻支援單繼承和多重繼承。

              (2)接口和類之間是實作關系,一個實作類可以實作多個接口

              (3)接口和接口之間是繼承關系,可以多繼承和多重繼承

java1.8的新特性:

             在接口中可以寫有方法體的方法,但是必須加關鍵字  default。

            加上此關鍵字後即可在接口裡面寫有方法體的方法了。