抽象類(abstract class)
-
定義:包含抽象方法的的類是abstract class
用abstract關鍵字修飾
-
作用:abstractclass是爲了把相同的東西提取出來,即重用
-
使用abstractclass語法規定
語法 | 備註 |
---|---|
抽象類定義用abstract關鍵字修飾 | 要通過子類進行實例化 |
抽象類是不能被實例化的 | 只能通過子類進行實例化(extends) |
子類必須重寫父類的所有抽象方法 | 抽象方法:聲明但卻未被實現的方法,用abstract關鍵字修飾 |
含有抽象方法的類一定是抽象類,但是抽象類不一定含有抽象方法 | 無 |
抽象類是在功能上的一個規定 | 無 |
接口(Interface)
-
定義:比abstract class更加抽象,是一種特殊的abstract class
用Interface關鍵字修飾
-
作用:Interface是爲了把程序模塊進行固化的契約,是爲了降低偶合
- 使用Interface的語法規定
語法 | 備註 |
---|---|
接口定義用Interface關鍵字修飾 | |
接口中的所有方法都是抽象的 | 可以用abstract修飾,也可以省略 |
接口中的方法必須是用public修飾,或不寫 | 但是不能被其他修飾符修飾 |
接口中的屬性必須是全局常量 | public static final修飾 |
抽象類是用來被它的子類實現的 | 關鍵字Implements |
抽象類是在結構上的一個規定 | 無 |
接口不能被實例化 | 無 |
子類實現接口時需要實現接口中的所有方法 | 若有一個未不實現,該子類就是抽象類abstract class |
1.抽象類(abstract) :不能被實例化,只能被繼承(extends),繼承的子類必須全部重寫其父類的抽象方法;
2.接口(interface): 不能被實例化,只能被實現(implements),實現子類如果沒有全部重寫此interface的抽象方法,則此子類就是一個抽象類(absctract)
1. 抽象類可以有構造方法,有普通成員變量,包含靜態方法;接口不能有構造方法 ,沒有普通成員變量,不能包含靜態方法
2. 抽象類中可以包含非抽象的普通方法,接口中的所有方法必須是抽象的,不能有非抽象的普通方法
3. 抽象類中抽象方法的訪問類型可以是public,protected和默認類型雖然(eclipse下不報錯,但應該也不行),但接口中的抽象方法只能是public類型,並且默認即爲public abstract類型
5. 抽象類和接口中都可以包含靜態成員變量,抽象類中的靜態成員變量的訪問類型可以任意,但接口中定義的變量只能是public static final類型,並且默認即爲public static final類型
6. 一個類可以實現多個接口,但只能繼承一個抽象類