主要區別
抽象類與介面的主要區別在於Java介面的過程本質上是抽象的,不能有應用程式。廣義地說,介面實際上是一個契約,當我們談論介面時,它適用於方法沒有主體,它只是一個模式。而抽象類基本上是使用成本較高的類。抽象類和介面是一個完全不同的概念,這是兩個不同的東西,但有時它們的實現非常相似。
什麼是抽象類(abstract class)?
抽象類並不是程式設計師完全隱含的。抽象類可以有一個或多個抽象方法。它們對於建模類分組或排名非常有用,當這一過程被執行時,程式設計師會在看到需求之後得到構建什麼的想法。抽象類不能完全依賴,因為它缺少某些部分。這一論點背後的主要觀點是,抽象類嚴格面向物件,儘管它有一個方法標題,但沒有正文。當我們談論抽象類時,兩個類之間有著很強的聯絡,因為這兩個類傾向於從另一個類獲得或繼承。
什麼是介面(interface)?
相反,當我們談論介面時,介面本身與表示介面的類之間的關係或通訊不如抽象類中的強。Java類可以實現許多介面,但可以從單個抽象類繼承。所以,這意味著當你想同時暗示許多互動時,介面就是你的東西。除此之外,即使您暫時不想更改API,介面也是您的最佳選擇。介面實際上是兩個不同物件之間的契約。簡而言之,介面圍繞著功能。
主要區別
- 抽象類是面向物件的,而介面是面向函式的。
- 當你想讓API保持一段時間不變時,你就選擇了介面而不是抽象類。
- 透過暗示多個介面可以獲得多個繼承。在抽象類中,不能獲得多個繼承。
- 如果將來需要在工作中新增方法,那麼選擇抽象類,而不是介面。
- 抽象類提供了一個公共的基類應用程式,但在介面中沒有發生這種情況。
- 在介面中,您實現的所有方法都是公共的,但是在抽象類中,您也可以應用一些非公共方法。
- 建構函式不在介面中,但它們確實出現在抽象類中。
- 抽象類的完整成員可以是靜態的,但不是介面的。