天天看點

使用抽象類的注意事項 | 帶你學《Java面向對象程式設計》之五十三

上一篇:高度概括藝術-初識抽象類 | 帶你學《Java面向對象程式設計》之五十二

【本節目标】

通過閱讀本節内容,你将對final、static關鍵字有更深的了解,并對使用抽象類的有關注意事項具備一定的認識。

抽象類的相關說明

抽象類是一個重要的面向對象設計的結構,對于抽象類使用的時候需要注意以下幾點問題:

  1. 在定義抽象類的時候絕對不能夠使用final關鍵字進行定義,因為抽象類必須有子類,而final定義的類是不能夠有子類的。
  2. 抽象類是作為一個普通類的加強版出現的(抽象類的組成就是在普通類的基礎上擴充而來的,隻是追加了抽象方法),既然是在普通類的基礎上擴充的,那麼普通類之中就可以定義屬性和方法,那麼這些屬性一定是要求進行記憶體空間開辟的,是以抽象類一定可以提供有構造方法,并且子類也一定會按照子類對象的執行個體化原則進行構造調用。
abstract class Message {    //定義抽象類
    private String type ;     //消息類型
    public Message (String type) {     //類中沒有提供有無參構造
        this.type = type ;
    }
    public abstract String getConnectInfo() ;           //抽象方法
    public void setType(String type) {    //普通方法
        this.type = type ;
    }
    public String getType() {    //普通方法
        return this.type ;
    }
}
class DatabaseMessage extends Message {   //類的繼承關系
    public DatabaseMessage(String str) {
        super(str) ;
    }
    public String getConnectInfo() {           //方法覆寫
        return “Oracle資料庫連接配接資訊。”   
    }
}
public class JavaDemo {
    public static void main(String args[]) {
         Message msg = new DatabaseMessage (“客戶消息”) ;
         System.out.println(msg.getConnectInfo()) ;
         System.out.println(msg.getType ()) ;
    }
}           

執行結果:

Oracle資料庫連接配接資訊。

客戶消息

  1. 抽象類中允許沒有抽象方法,但是即便沒有抽象方法,也無法直接使用關鍵字new直接執行個體化抽象對象。
abstract class Message {    //定義抽象類
}
class DatabaseMessage extends Message {   //類的繼承關系
}
public class JavaDemo {
    public static void main(String args[]) {
        Message msg = new Message () ;
    }
}           

錯誤:Message是抽象的;無法執行個體化

即便抽象類沒有執行個體化對象,那麼也無法直接使用關鍵字new擷取抽象類對象,必須依靠子類對象完成。

Message msg = new DatabaseMessage () ;           
  1. 抽象類中可以提供有static方法,并且該方法不受到抽象類對象的局限。
abstract class Message {    //定義抽象類
    public abstract String getInfo() ;    //抽象方法
    public static Message getInstance() {
        return new DatabaseMessage() ;
    }
}
class DatabaseMessage extends Message {   //類的繼承關系
    public String getInfo() {
        return “資料庫連接配接資訊。”
    }
}
public class JavaDemo {
    public static void main(String args[]) {
        Message msg = Message.getInstance () ;    
        System.out.println(msg.getInfo()) ;
    }
}           

資料庫連接配接資訊。

static方法永遠不受到執行個體化對象或結構的限制,永遠可以直接通過類名稱進行調用。

想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。

本内容視訊來源于

阿裡雲大學 下一篇:教你将好鋼用在刀刃上-應用抽象類 | 帶你學《Java面向對象程式設計》之五十四 更多Java面向對象程式設計文章檢視此處