【本節目标】
通過閱讀本節内容,你将對抽象類的存在有更深入的了解,并能夠簡答的從實際生活中的多種事物中抽象出統一的特征,形成抽象類。
模闆設計模式
抽象類的本質上就屬于一個加強型的類,那麼對于類已經清楚了,可以描述一切的有關的現實事物,但是通過分析也可以發現,抽象類的設計應該是比類更高一層的定義。那麼下面來研究一下抽象類的實際應用。
假如現在要描述有三類的事務:
- 機器人:不休息,隻知道補充能量和工作;
- 人類:需要休息、需要吃飯以及努力地工作;
- 豬:需要休息、不需要工作隻需要吃飯。

圖一 抽象類
範例:實作代碼操作
abstract class Action {
public static final int EAT = 1 ;
public static final int SLEEP = 5 ;
public static final int WORK = 10 ;
public void command(int code) {
switch(code) {
case EAT : {
this.eat () ;
break ;
}
case SLEEP : {
this.sleep () ;
break ;
}
case WORK : {
this.work () ;
break ;
}
case EAT + SLEEP + WORK : {
this.eat () ;
this.sleep () ;
this.work () ;
break ;
}
}
}
public abstract void eat () ;
public abstract void sleep () ;
public abstract void work () ;
}
class Robot extends Action {
public void eat () {
System.out.println(“機器人需要接通電源充電。”) ;
}
public void sleep () {}
public void work () {
System.out.println(“機器人按照固定的套路進行工作。”) ;
}
}
class Person extends Action {
public void eat () {
System.out.println(“餓的時候安靜的坐下吃飯。”) ;
}
public void sleep () {
System.out.println(“安靜的躺下,慢慢的睡着,而後做着美麗的夢”) ;
}
public void work () {
System.out.println(“人類是進階腦類動物,是以要有想法的工作。”) ;
}
}
class Pig extends Action {
public void eat () {
System.out.println(“吃食槽中的人類的剩飯。”) ;
}
public void sleep () {
System.out.println(“倒地就睡。”) ;
}
public void work () {}
}
public class JavaDemo {
public static void main(String args[]) {
Action robotAction = new Robot() ;
Action personAction = new Person() ;
Action pigAction = new Pig() ;
System.out.println(“--------------機器人行為--------------”) ;
robotAction.command(Action.SLEEP) ;
robotAction.command(Action.WORK) ;
System.out.println(“--------------人類的行為--------------”) ;
personAction.command(Action.SLEEP + Action.EAT + Action.WORK) ;
System.out.println(“--------------豬類的行為--------------”) ;
pigAction.work() ;
pigAction.eat() ;
}
}
圖二 執行結果圖
現在的程式已經完整的實作了一個行為的抽象處理,但是也需要做出一點點思考。現在定義的Action父類主要的目的:對所有行為規範進行統一處理。
抽象類最大的好處一是對子類方法的統一管理,二是可以自身提供有一些普通方法并且這些普通方法,并且這些普通方法可以調用抽象方法(這些抽象方法必須在有子類提供實作的時候才會生效)。
想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。
本内容視訊來源于
阿裡雲大學 下一篇:包裝才更美:初識包裝類 | 帶你學《Java面向對象程式設計》之五十五 更多Java面向對象程式設計文章檢視此處