【本節目标】
通過閱讀本節内容,你将了解到抽象類的相關知識,并能夠編寫簡單的抽象類,遵循繼承抽象類的規則實作抽象類中的抽象方法。
類繼承的主要作用在于可以擴充已有類的功能,但是對于之前的繼承操作而言會發現,子類可以由自己的選擇任意來決定是否要覆寫某一個方法,這個時候父類無法對子類做出強制性的約定(強制性子類必須覆寫某些方法),這種情況下往往不會采用類的繼承(在實際的開發之中很少會出現繼承一個已經完善的類,可以直接使用的類),而是必須要繼承抽象類。在以後進行父類(SuperClass)設計的時候,優先考慮的一定是抽象類。
抽象類基本概念
抽象類的主要作用在于對子類中覆寫方法進行約定,在抽象類裡面可以去定義一些抽象方法以實作這樣的約定。抽象方法指的是使用了abstract關鍵字定義的并且沒有提供方法體的方法,而抽象方法所在的類必須為抽象類,抽象類必須使用abstract關鍵字來定義(在普通類的基礎上追加抽象方法就是抽象類)。
範例:定義一個抽象類
abstract class Message { //定義抽象類
private String type ; //消息類型
public abstract String getConnectInfo() ; //抽象方法
public void setType(String type) { //普通方法
this.type = type ;
}
public String getType() { //普通方法
return this.type ;
}
}
public class JavaDemo {
public static void main(String args[]) {
}
}
當一個抽象類完成之後(切記:“抽象類不是完整的類”),如果要想去使用抽象類,則必須按照如下原則去進行:
- 抽象類必須提供有子類,子類使用extends繼承一個抽象類;
- 抽象類的子類(不是抽象類)一定要覆寫抽象類中的全部抽象方法;
- 抽象類的對象執行個體化可以利用對象多态性通過子類向上轉型的方式完成。
範例:使用抽象類
abstract class Message { //定義抽象類
private String type ; //消息類型
public abstract String getConnectInfo() ; //抽象方法
public void setType(String type) { //普通方法
this.type = type ;
}
public String getType() { //普通方法
return this.type ;
}
}
class DatabaseMessage extends Message { //類的繼承關系
public String getConnectInfo() { //方法覆寫
return “Oracle資料庫連接配接資訊。”
}
}
public class JavaDemo {
public static void main(String args[]) {
Message msg = new DatabaseMessage () ;
msg.setType(“客戶消息”) ;
System.out.println(msg.getConnectInfo()) ;
System.out.println(msg.getType ()) ;
}
}
執行結果:
Oracle資料庫連接配接資訊。
客戶消息
從整體上來講,抽象類隻是比普通類增加了抽象方法以及對子類的強制性覆寫要求而已,其它的使用過程和傳統的類繼承是完全相同的。
對于抽象類使用的幾點意見:
- 抽象類使用很大程度上有一個核心的問題:抽象類自己無法直接執行個體化;
- 抽象類之中主要的目的是進行過度操作使用,是以當要使用抽象類進行開發的時候,往往都是在設計中需要解決類繼承問題是所帶來的的代碼重複處理。
想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。
本内容視訊來源于
阿裡雲大學 下一篇:使用抽象類的注意事項 | 帶你學《Java面向對象程式設計》之五十三 更多Java面向對象程式設計文章檢視此處