1. 程式人生 > >第10章 介面(Interface)

第10章 介面(Interface)

這裡寫圖片描述

介面的概述 是一個由外部 給類選擇性的新增行為的新的資料型別

編寫、實現、繼承介面的語法 在定義常量時: 可以寫成 public static final 也可以寫成 static final 亦可以寫成 final 甚至可以直接去掉 final 類不能繼承介面,只能實現介面

介面特點 JDK1.8之前:

介面無法例項化,只能由介面的實現類來例項化 1.介面跟類一樣,同樣不能被例項化 2.介面檔案最後同樣也會被編譯器編譯成 服務介面(介面名). class的位元組碼檔案 3.介面中的所有方法,都只能定義成抽象方法,不能擁有方法體 4.介面中不能擁有構造器,以及初始化塊(靜態初始化塊) 5.介面中的所有方法,訪問修飾符預設就是public,即便不寫也是public,介面方法中,可以不寫public,以及abstract修飾符,不寫,編譯器會自動給我們新增上public abstract。 6.介面中不能定義“成員變數”,只能定義公開的,並且是靜態常量 7.介面中可以定義無限個常量,可以定義無限的抽象方法(理論上) 8.介面在使用上來講,不能被例項化,所有的抽象方法都必須由介面的實現類來實現

JDK1.8之後,出現的新的特性(瞭解) 1.介面中可以,新增非抽象方法,但是需要使用 default 關鍵字來宣告非抽象方法,但此時 default 已經不再是訪問修飾符,而真正的訪問修飾符還是public 2.介面中可以使用 static 宣告靜態方法,但是必須由方法體的實現 ”{ }“

介面的使用 1.使用interface來宣告一個介面 2.介面可以使用extends來繼承介面 3.類可以使用implements來實現介面中的抽象方法,類一旦使用了介面,那麼就必須要遵從“契約”去實現介面中的所有抽象方法 4.類只能單繼承(繼承一個父類),但是可以多實現(實現多個介面),介面之間採用“逗號”間隔 5.介面在設計時,需要遵從“介面最小化”原則

介面與多型 1.介面中只能允許抽象存在 2.介面同樣是一種多型的體現,它依舊滿足“相同的行為,不同的實現” 3.介面與實現類之間的關係,依舊是(父子關係)“is-a“的關係,同樣可以使用”轉型技術“ 4.介面引用型別轉換的時候,如果不是該介面的實現類,同樣不能型別轉換成功,它們不滿足父子關係。

抽象類和介面之間的區別 語法層面:

語法定義 類的成員加上抽象方法 介面 interface 抽象方法 抽象類 abstract

語法使用 都不能例項化(new) 多繼承多實現

設計層面 抽象類中存放類與生俱來的方法 介面中由外部附加給類的方法或行為