abstract class 和 interface 的區別
abstract class的特徵:
1. abstract class和abstract method都必須用abstract關鍵字來修飾
2. abstract class不能用new關鍵字去產生物件
3. abstract method只需要宣告, 不需要實作
4. 繼承abstract class的子類別必須實作父類別的abstract method, 否則這子類別還是個abstract class
interface的特徵:
1. interface沒有建構方法 (即method中沒有參數, 且沒有任何變數的設定)
Ex: interface Bus{
void sound();
}
2. interface中所有資料成員都必須初始化, 且均為常數
3. 宣告變數必須是final, static和public
4. interface中的method必須為abstact或public
abstract class 和 interface 的使用時機
何謂abstract class?
提供一種多個class一起合作工作的方式, 將多個class中相同的元素pull up method到public class中, 再以繼承的方式來使用它, 目的是為了實現"多型"精神
何謂interface?
即spec., 完全不需要定義實作, 只需要函式原型
若要實作interface, 就必須follow它的spec.
[public] [abstract] interface 介面名稱{
權限設定 傳回型態 method(parameters);
權限設定 傳回型態 method(parameters);
}
[public] [abstract]是預設, 所以可省略, 因為interface本身就是抽象的
(註)一個介面可以同時繼承多個介面, 即同時繼承了多個介面的abstract method和常數
=> interface A extends 介面1, 介面2, 介面3, ...
一個class可以同時實作多個interface
=> class B implements 介面1, 介面2, 介面3, ...
沒有留言:
張貼留言