abstract關鍵字/抽象類

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.");
   }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章