1. 程式人生 > >Java中抽象類和介面的對比分析

Java中抽象類和介面的對比分析

  1. abstract class在Java語言中表示的是一種繼承關係,一個類只能使用一次繼承關係。但是,一個類卻可以實現多個interface。
  2. 在abstract class中可以有自己的資料成員,也可以有非abstarct的成員方法,而在interface中,只能夠有靜態的不能被修改的資料成員(也就是必須是static final的,不過在interface中一般不定義資料成員),所有的成員方法都是abstract的。
  3. abstract class和interface所反映出的設計理念不同。其實abatract class表示的是‘is-a’關係,inteifece表示的是‘like-a’關係。
  4. 實現抽象類和介面的類必須實現其中的所有方法。抽象類中可以有非抽象方法。介面中則不能有實現方法。
  5. 介面中定義的變數預設是public static final型,且必須給其初值,所以實現類中不能重新定義,也不能改變其值。
  6. 抽象類中的變數預設是friendly型,其值可以在子類中重新定義,也可以重新賦值。
  7. 介面中的方法預設都是public,abstract型別的。