相同點:ide
都位於繼承的頂端,用於被其餘實現或繼承;函數
都不能實例化;對象
都包含抽象方法,其子類都必須覆寫這些抽象方法;繼承
區別:接口
抽象類爲部分方法提供實現,避免子類重複實現這些方法,提供代碼重用性;接口只能包含抽象方法;it
一個類只能繼承一個直接父類(多是抽象類),卻能夠實現多個接口;(接口彌補了Java的單繼承)class
兩者的選用:構造函數
優先選用接口,儘可能少用抽象類;方法
須要定義子類的行爲,又要爲子類提供共性功能時才選用抽象類;總結
個人總結:
接口不能有構造函數,抽象類是能夠有構造函數的,
abstract能夠定義構造函數(包括帶函數的構造函數),由於要保證其子類在建立的時候可以進行正確的初始化,可是Abstract類不能被實例化。
知識點:若是不能夠或者沒有建立對象,那麼咱們必須加上static修飾,不能用對象調用,就只好用類去調用。