1. 程式人生 > >抽象類與接口

抽象類與接口

同時 ont body ava 抽象 實例化 color 全部 ron

抽象類與接口相同點:
1.都不能被實例化,它們都位於繼承樹的頂端,用於被其他類實現和繼承.
2.都可以包含抽象方法,並且實現接口和繼承抽象類的方法都必須實現這些抽象方法

抽象類與接口的區別:
1.變量
抽象類中既可以定義普通成員變量,也可以定義靜態常量
接口中只能定義靜態常量,不能定義普通成員變量.

接口中變量static:因為一個類可以實現多個接口,如果一個類同時實現了多個接口而每個接口中都定義了同一個變量的話就會產生在類中不知道是哪個接口
中的變量了,所以必須定義成static的,每個接口擁有各自的這個變量。
接口中變量final:因為一個接口可以被多個類實現,如果不定義成final的話每個實現了該接口的類都去改變這個變量就會產生錯誤,所以必須定義成final。


2.方法:
抽象類中既可以有抽象方法,也可以有非抽象方法,靜態方法
接口中有抽象方法,default方法(在Java8中才開始有),靜態方法(在Java8中才開始有)

3.構造器:
抽象類中可以有構造器,接口中不能有構造器

4.初始化塊:
抽象類中可以有初始化塊
接口中不能有初始化塊

5.繼承實現:
一個類最多只能繼承一個抽象類,並且要實現其全部抽象方法
一個類可以實現多個接口,並且要實現其全部抽象方法

抽象類與接口