抽象類與介面的區別

2021-10-06 10:30:22 字數 1155 閱讀 5557

抽象類與介面的區別,這是乙個經常被問到面試題,區別主要有以下幾點,我們可以從幾個方面進行分析:

(一) 繼承方面

(1) 抽象類只能單繼承;介面可以多實現

(二) 成員屬性方面:

(1) 抽象類中可以有普通屬性,也可以有常量

(2) 介面中的成員變數全部預設是常量,使用public static final修飾,這個可以省略不寫

(三) **塊方面:

(1) 抽象類可以含初始化塊;介面不能含初始化塊

(四) 建構函式方面:

(1) 介面不能有建構函式

(2) 抽象類可以有構函式,但是這裡的建構函式不是用來建立物件的,而且用來被實現類呼叫進行初始化操作的

(五) 方法方面:

(1) 介面裡面不能定義靜態方法;抽象類裡面可以定義靜態方法

(2) 介面裡面只能是抽象方法;抽象類裡面可以有抽象方法也可以有普通方法

上面就是介面與抽象類的區別,在說完區別之後,我們可以補充一下介面與抽象類之間的相同之處:

(1) 介面與抽象類都不能被例項化,需要被其他進行實現或繼承

(2) 介面與抽象類裡面都能包含抽象方法,實現介面或繼承抽象類的子類都必須實現這些抽象方法

針對相同之處的第二點,我再細說一下

(一) 超類是介面:

(1) 如果使用介面繼承(extends,無法使用implements)這個介面,那麼在這個子類介面中,可以實現其父類介面中的抽象方法(這種方法我從沒看見過,但是在今天的面試中,面試官問我介面中是否可以有具體的實現方法,可以將這種情況舉出來)

(2) 如果使用抽象類實現這個介面,可以在這個子類抽象類中實現父類介面中的抽象方法

(3) 如果使用具體類實現這個介面,那麼就必須實現父類介面中的所有抽象方法

(二) 超類是抽象類

(1) 介面不能繼承抽象類

(2) 如果使用抽象類繼承這個抽象類,可以在這個子類抽象類中實現父類介面中的抽象方法

(3) 如果使用具體類繼承這個抽象類,那麼就必須實現父類抽象類中的所有抽象方法

java抽象類與介面的區別抽象類與介面的特性是什麼

介面和抽象類的概念不一樣。介面是對動作的抽象,抽象類是對根源的抽象。抽象類表示的是個物件,什麼物件。介面表示的是物件的功能,能做什麼。舉個例子 男人 物件 和女人 物件 這兩個類 物件 他們可以抽象為人。公貓和母貓可以抽象為貓。人可以吃飯,可以睡覺,貓呢也可以吃飯和睡覺,那麼這個 吃飯 睡覺 就是某...

抽象類與介面的區別

c 中可以多繼承介面,卻只能繼承自乙個抽象類 抽象類中的方法可以包含一些實現,但介面卻只能定義方法的一種規範,不能包含實現 繼承類必須實現藉口中所有的方法,而不一定要實現抽象類中的所有方法 抽象類可以繼承自抽象類 但介面不能繼承自介面 派生類必須實現未實現的方法,抽象類是抽象方法,介面則是所有成員 ...

抽象類與介面的區別

c 中可以多繼承介面,卻只能繼承自乙個抽象類 抽象類中的方法可以包含一些實現,但介面卻只能定義方法的一種規範,不能包含實現 繼承類必須實現藉口中所有的方法,而不一定要實現抽象類中的所有方法 抽象類可以繼承自抽象類 但介面不能繼承自介面 派生類必須實現未實現的方法,抽象類是抽象方法,介面則是所有成員 ...