天天看點

【JAVA】抽象類和接口的聯系與差別

                                        抽象類和接口的聯系與差別

抽象類與接口一直是面試中問到的一道比較基礎的問題,弄懂它們之間的聯系與差別,将會提升我們面向對象程式設計的功底。

聯系

(1)抽象類和接口都不能被執行個體化。如果要執行個體化,則抽象類變量必須指向某一個實作其所有抽象方法的子類對象,接口變量必須指向某一個實作其所有抽象方法的實作類對象。

(2) 未能實作抽象類或接口中的所有方法時,抽象類子類或接口實作類都必須是抽象類。

差別

(1)抽象類隻能被繼承,接口能被實作,也能被接口繼承。

注意:

【1】抽象類可以繼承普通類。

【2】接口可被接口多繼承。

(2)接口中的變量隻能是公共的靜态的常量,而抽象類中的變量可以是普通的變量,也可以是靜态變量。

(3)接口中方法隻能是抽象方法,而抽象類中不僅可以有抽象方法,也可以有普通的實作方法。

注意:

【1】抽象類中可以沒有抽象方法,但有抽象方法的類一定是抽象類。

【2】JDK1.8之後,接口中可以有預設方法和靜态方法,且必須是實作方法。

(4)接口中的抽象方法隻能被public和abstract修飾,而抽象類卻沒有此限制。

注意:

【1】抽象方法是要被實作的,是以不能被private、static、synchronized和native修飾

(5)接口中沒有構造方法,而抽象類中可以有構造方法。

(6)接口中沒有main方法,而抽象類中可以有main方法,是以抽象類可以被運作。

下面給出一個比較直覺的對比

【JAVA】抽象類和接口的聯系與差別

兩者的用途

繼續閱讀