抽象類(abstract class)與接口(interface)的異同

抽象類:若是一個類中包含抽象方法,那麼這個類就是抽象類。在Java語言中,能夠經過把類或類中的某些方法聲明爲abstract(abstract只能修飾類或方法,不能修飾屬性)來表示一個類是抽象類。微信

接口:接口就是指一個方法的集合,接口中的全部方法都沒有方法體,在Java語言中,接口是經過關鍵字interface來實現的。設計

相同點:對象

1. 抽象類與接口都不能被實例化,它們都位於繼承樹的頂端,用於被其它類繼承和實現。繼承

2. 抽象類與接口均可以包含抽象方法,繼承抽象類和實現接口的普通子類都必須實現這些抽象方法。接口

不一樣點:模板

1. 設計目的不一樣:抽象類體現的是一種模板式設計;接口體現的是一種規範。變量

2. 用法上的不一樣二維碼

1)接口裏只能包含抽象方法、靜態方法和默認方法,不能爲普通方法提供方法實現;抽象類則徹底能夠包含普通方法。方法

2)接口裏只能定義靜態常量,不能定義普通成員變量;抽象類裏則既能夠定義普通成員變量,也能夠定義靜態常量。im

3)接口裏不包含構造器;抽象類裏能夠包含構造器,抽象類裏的構造器並非用於建立對象,而是讓其子類調用這些構造器來完成屬於抽象類的初始化操做。

4)接口裏不能包含初始化塊;但抽象類則徹底能夠包含初始化塊。

5)一個類最多隻能有一個直接父類,包括抽象類;但一個類能夠直接實現多個接口,經過實現多個接口能夠彌補Java但集成的不足。

 

歡迎關注微信公衆號【Java典籍】,收看更多Java技術乾貨!

  ▼微信掃一掃下圖↓↓↓二維碼關注

 

相關文章
相關標籤/搜索