1. 程式人生 > >JAVA中接口與抽象類

JAVA中接口與抽象類

rac 構造 轉換 希望 就是 pub 成員變量 類型 規則

抽象類總結

抽象類的概念:是使用關鍵字abstract修飾的類就是抽象類;

抽象類的產生:當多個不能相互繼承的類具有相同的功能時,就需要將共同的信息向上抽取,放到公共的父類中;如果公共的父類只能描述所有子類都具有的功能,但描述不清功能的具體實現,就需要將該函數定義為抽象的,使用關鍵字abstract修飾;如果一個類中出現了抽象的函數,說明這個類也是不具體的,應該定義為抽象類,使用abstract修飾;

抽象類的特點

抽象類不能實例化;

抽象類中的抽象函數必須由子類去實現,否則子類也是抽象類;

抽象類也是一個類,類中可以書寫所有成員,也可以沒有抽象函數;

因為抽象函數必須由子類實現,所以不參與繼承的(private)和不能被子類重寫的(final)關鍵字不能和abstract共存;

因為靜態函數不需要類的對象就可以直接使用,所以static關鍵字也不能和abstract共存;

如果一個類不希望被實例化,但又希望被子類繼承,就可以定義為抽象的,即使類中沒有抽象函數;

接口的作用總結

接口的聲明格式

interface Inter{}

接口中能書寫的成員

成員變量:全部都使用public static final 修飾;所以接口中的成員變量都是常量;

成員函數:全部都使用 public abstract 修飾;

接口中沒有構造函數;

接口的細節

接口不能實例化,只能被類實現;

實現接口的類必須實現接口的所有方法,否則實現類必須是抽象的;

接口與接口是繼承的關系,一個接口可以繼承多個接口;類和接口是實現的關系,一個類可以實現多個接口;

通常開發中使用接口類型的引用指向實現類的對象,這是多態的體現;

接口的作用

描述非繼承體系中的共性內容;

通過多態使用接口,可以提高程序的擴展性;

實現的java的多繼承;

接口可以定義規則;

接口和抽象類的區別

1、從聲明上:

  1. 抽象類是一個類,需要使用關鍵字:class聲明
  2. 接口不是一個類,使用關鍵字:interface聲明

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

  1. 抽象類可以書寫類中的所有成員
  2. 接口中只能書寫成員變量和抽象函數;(從JDK8開始,接口中可以有實現的函數)

3、從有無構造函數上看:

  1. 抽象類有構造函數,是給子類實例化對象使用的
  2. 接口沒有構造函數

4、從作用上看:

  1. 抽象類是描述的繼承體系中的共同的特征和行為,如果行為不確定,就定義為抽象函數;
  2. 接口描述的是不屬於繼承體系的共同的功能;接口可以用來定義規則;

5、繼承關系上:

  1. 抽象類是一個類,只支持單一繼承和多重繼承;
  2. 接口和接口可以多繼承和多重繼承;接口和實現類可以多實現;

適配器小結

適配器的作用,就是適配、轉換,將不符合使用要求的東西轉換為符合使用要求的;

適配器設計模式,解決的是怎麽將不符合使用要求的類、對象或接口轉換為符合使用要求的;

根據適配的對象不同,可以將適配器分為類的適配、對象的適配和接口的適配;

接口的適配的步驟:

1、創建一個適配器類實現接口,在這個類中使用空實現實現接口中的所有抽象函數;

2、因為適配器類中的函數都是空實現的,創建該類的對象沒有意義,所以要將適配器類定義為抽象類;

3、要使用適配器類,只需書寫類繼承適配器類即可;

JAVA中接口與抽象類