定義(以下是百度百科中的定義): Java介面:Java介面是一系列方法的聲明,是一些方法特征的集合,一個介面只有方法的特征沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行為(功能)。 個人補充:Java介面中也可以有屬性,只不過必須為 靜態常量(由public ...
- 定義(以下是百度百科中的定義):
Java介面:Java介面是一系列方法的聲明,是一些方法特征的集合,一個介面只有方法的特征沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行為(功能)。
個人補充:Java介面中也可以有屬性,只不過必須為 靜態常量(由public static final修飾),因此 有數據共用的作用。
Java抽象類:Java語言中,用abstract 關鍵字來修飾一個類時,這個類叫作抽象類。抽象類是它的所有子類的公共屬性的集合,是包含一個或多個抽象方法的類。抽象類可以看作是對類的進一步抽象。在面向對象領域,抽象類主要用來進行類型隱藏。
個人補充:Java抽象類也可以不含抽象方法,這樣的話純粹是為了不允許實例化。不過個人感覺真正這樣設計沒什麼卵意義。
相同點:
- 都位於繼承的頂端,被用於實現或繼承。
- 都不能實例化。
- 都擁有需要被實現的抽象方法(抽象類可以沒有抽象方法,不過很少有真正這樣設計的)。
不同點:
- 從繼承的角度:抽象類只允許單繼承,而介面允許多繼承。
- 從實現的角度:抽象類中允許有具體實現的方法,而介面則所有方法必為抽象方法(JDK8中介面新增了一個特性:介面中可以有靜態實現方法)。介面中的屬性必須為靜態常量(由public static final修飾),而抽象類中沒這個限制。介面還不能有構造方法,抽象類也沒這個限制。