1. 程式人生 > >抽象類(abstract class)和介面(interface)有什麼異同?【Java面試題】

抽象類(abstract class)和介面(interface)有什麼異同?【Java面試題】

1、抽象類可以包含非抽象的方法,而介面中的方法必須是抽象的。

2、繼承抽象類在Java語言體系中體現一種繼承關係,在合理的繼承關係中,父類和派生類比如按存在is-a關係。而實現介面則體現一種has-a關係,實現者僅僅是實現了interface定義的契約而已。

3、抽象類中可以有成員變數,而介面中不能有成員變數。

4、抽象類和介面中都可以包含靜態成員變數,抽象類中的靜態成員變數的屬性可以是任意的,而介面中的靜態成員變數預設且必須是public static final。

5、介面中的抽象方法預設且必須都是public的,而抽象類中的抽象方法可以是public、protect或預設。

6、抽象類中可以有構造方法,但是不能例項化。

7、抽象類中可以有靜態方法(非抽象的),而介面中不能有靜態方法。

8、抽象類中的抽象方法不能用static、synchronized和native連用