abstract關鍵字
abstract修飾的類稱爲抽象類,修飾的方法,稱爲抽象方法
abstract可以修飾哪些
抽象類
1.抽象類不能有實例
2.抽象類可以有普通的構造器,方法,屬性
3.抽象類就是用來被繼承的
抽象方法
1.抽象方法不能有方法體,
2.抽象方法的必須被子類重寫,若沒有重寫,就將子類也設定爲抽象類
3.擁有抽象方法的類必爲抽象類
4.抽象類中可以沒有抽象方法,但無抽象方法的抽象類沒有意義
abstract不能修飾哪些
1.不能修飾屬性,代碼塊,構造器
2.abstract不能修飾私有的方法,因爲子類無權訪問父類的私有方法,更不能重寫,而抽象類就是用來被繼承的,無意義了。
3.abstract不能修飾靜態方法,靜態方法不能被重寫,而抽象方法目的在於重寫。
3.abstract不能修飾final方法,因爲funal方法不能被重寫
抽象類應用:模板模式
抽象類是模板模式的一種設計,抽象類作爲多個子類的一個通用模板,子類在抽象類的基礎上行了擴展,改造,但是子類總體上還保留了抽象類的行爲。
- 解決問題:當功能一部分是確定的,一部分是不確定我們可以將不確定的部分暴露出去,讓子類去實現
- 應用:junit單元測試,數據庫訪問的一個封裝,spring中的JDBCtemplete等等
步驟
1.創建一個抽象類
abstract class Game(){
}
2.創建final模板方法
abstract class Game{
public final void startgame();
public final void endgame();
}
3.擴建模板類的實體類,重寫抽象方法
class Minecraft extends Game{
@Override
void endgame() {
System.out.println("Minecraft Game Finished!");
}
@Override
void startgame() {
System.out.println("Minecraft Game Started.");
}
}