抽象 (has-a)
抽象: 隨着繼承層次中一個個新子類的定義,類變得越來越具體,而父類則更一般,更通用,有時以至於它沒有具體的實例,這樣的類叫做抽象類。
- abstract :抽象的
- abstract 可以用來修飾類:抽象類
– 抽象類不能被實例化
– 抽象類中有構造器,便於子類實例化時調用 - abstract 可以用來修飾方法:抽象方法
使用抽象
創建抽象類:
//加入 abstract 關鍵字
public abstract class Father {
}
創建抽象方法:
//沒有方法體
public abstract void print();
抽象類的特性: 子類繼承時必須實現父類中所有的抽象方法(除非自身也是抽象類)
抽象方法特性: 抽象方法沒有方法體,可被子類覆蓋重寫
接口
接口: Java中不支持多繼承,一個子類只能擁有一個父類,而有時候需要幾個類中生出一個子類,來繼承他們所有屬性和方法。有了接口,就可以實現子類多繼承的效果。
- 接口使用interface來定義
- 接口與類爲並列關係
- 接口中的屬性只能定義全局常量
- 接口中的方法只能是抽象方法
- 接口中不能定義構造器,因此接口不能被實例化
- 接口與類爲實現關係,並且類可以實現多個接口
- 接口與接口之間爲繼承關係,並且可以多繼承
使用接口
//創建接口
public interface Father {
}
接口中只能定義全局常量和抽象方法
public interface Father {
//全局常量
public static final String str = "123";
//抽象方法(無需abstract)
public void print();
}
通過類來實現,可實現多個接口
public class Son implements Aa,Bb,Cc {
//實現接口方法
}