Java中接口與抽象類的異同

  1. 定義(如下是百度百科中的定義):

      Java接口:Java接口是一系列方法的聲明,是一些方法特徵的集合,一個接口只有方法的特徵沒有方法的實現,所以這些方法能夠在不一樣的地方被不一樣的類實現,而這些實現能夠具備不一樣的行爲(功能)。設計

        我的補充:Java接口中也能夠有屬性,只不過必須爲 靜態常量(由public static final修飾),所以 有數據共享的做用。對象

      Java抽象類:Java語言中,用abstract 關鍵字來修飾一個類時,這個類叫做抽象類。抽象類是它的全部子類的公共屬性的集合,是包含一個或多個抽象方法的類。抽象類能夠看做是對類的進一步抽象。在面向對象領域,抽象類主要用來進行類型隱藏。繼承

        我的補充:Java抽象類也能夠不含抽象方法,這樣的話純粹是爲了避免容許實例化。不過我的感受真正這樣設計沒什麼卵意義。接口


 

相同點:百度

  1. 都位於繼承的頂端,被用於實現或繼承。
  2. 都不能實例化。
  3. 都擁有須要被實現的抽象方法(抽象類能夠沒有抽象方法,不過不多有真正這樣設計的)。

不一樣點:方法

  • 從繼承的角度:抽象類只容許單繼承,而接口容許多繼承。
  • 從實現的角度:抽象類中容許有具體實現的方法,而接口則全部方法必爲抽象方法(JDK8中接口新增了一個特性:接口中能夠有靜態實現方法)。接口中的屬性必須爲靜態常量(由public static final修飾),而抽象類中沒這個限制。接口還不能有構造方法,抽象類也沒這個限制。
相關文章
相關標籤/搜索