相同點:
都不能被實例化
都包含抽象方法,這些抽象方法用于描述系統(tǒng)能提供哪些服務疙挺,而這些服務是由子類來提供實現(xiàn)的
在系統(tǒng)設計上邑商,兩者都代表系統(tǒng)的抽象層,當一個系統(tǒng)使用一棵繼承樹上的類時翔冀,應該盡量把引用變量聲明為繼承樹的上層抽象類型,這樣可以提高兩個系統(tǒng)之間的松耦合
不同點:
在抽象類中可以為部分方法提供默認的實現(xiàn)披泪,從而避免在子類中重復實現(xiàn)它們纤子;但是抽象類不支持多繼承。接口不能提供任何方法的實現(xiàn)款票,但是支持多繼承控硼。
接口代表了接口定義者和接口實現(xiàn)者的一種契約;而抽象類和具體類一般而言是一種is-a的關系艾少,即兩者在概念本質上是不同的卡乾。