1. 程式人生 > 實用技巧 >抽象類介面的區別?

抽象類介面的區別?

抽象類:

  1. 抽象類使用abstract修飾;
  2. 抽象類不能例項化,即不能使用new關鍵字來例項化物件;
  3. 含有抽象方法(使用abstract關鍵字修飾的方法)的類是抽象類,必須使用abstract關鍵字修飾;
  4. 抽象類可以含有抽象方法,也可以不包含抽象方法,抽象類中可以有具體的方法;
  5. 如果一個子類實現了父類(抽象類)的所有抽象方法,那麼該子類可以不必是抽象類,否則就是抽象類;
  6. 抽象類中的抽象方法只有方法體,沒有具體實現;

介面:

  1. 介面使用interface修飾;
  2. 介面不能被例項化;
  3. 一個類只能繼承一個類,但是可以實現多個介面;
  4. 介面中方法均為抽象方法
  5. 介面中不能包含例項域或靜態方法(靜態方法必須實現,介面中方法是抽象方法,不能實現)

區別

  1. 抽象類可以提供成員方法的實現細節,而介面中沒有;但是JDK1.8之後,在接口裡面可以定義default方法,default方法裡面是可以具備方法體的。
  2. 抽象類中的成員變數可以是各種型別的,而介面中的成員變數只能是public static final型別;
  3. 介面中每一個方法也是隱式指定為 public abstract,不能含有靜態程式碼塊以及靜態方法,而抽象類可以有靜態程式碼塊和靜態方法
  4. 一個類只能繼承一個抽象類,而一個類卻可以實現多個介面。