1. 程式人生 > >介面和抽象類的聯絡和區別

介面和抽象類的聯絡和區別

一 介面和抽象類的相似性

1 介面和抽象類都不能被例項化,它們都位於繼承樹的頂端,用於被其他類實現和繼承。

2 介面和抽象類都可以包含抽象方法,實現介面或繼承抽象類的普通子類都必須實現這些抽象方法。

二 介面和抽象類的區別

1 接口裡只能包含抽象方法,靜態方法和預設方法,不能為普通方法提供方法實現,抽象類則完全可以包含普通方法。

2 接口裡只能定義靜態常量,不能定義普通成員變數,抽象類裡則既可以定義普通成員變數,也可以定義靜態常量。

3 介面不能包含構造器,抽象類可以包含構造器,抽象類裡的構造器並不是用於建立物件,而是讓其子類呼叫這些構造器來完成屬於抽象類的初始化操作。

4 接口裡不能包含初始化塊,但抽象類裡完全可以包含初始化塊。

5 一個類最多隻能有一個直接父類,包括抽象類,但一個類可以直接實現多個介面,通過實現多個介面可以彌補Java單繼承不足。