寫給自己的JAVA工程師之路 抽象類

2021-08-09 13:45:10 字數 2115 閱讀 3657

如果說現在在乙個類之中需要定義乙個沒有方法體的乙個方法,那麼可以利用abstract關鍵字來進行抽象方法的定義,而包含有抽象方法的類就可以使用abstract來定義成為抽象類。

假如說有乙個a類在設計之初有乙個要求,希望繼承他的子類一定要覆寫他的方法。但事實上,這個時候的子類完全可以靈活的選擇是否覆寫方法。但是由於只是乙個普通方法,所以對於子類是否覆寫沒有任何的要求,於是這樣就會出現乙個漏洞,父類無法強制要求子類覆寫方法。

如果只依靠普通類的繼承,那麼根本就不能對子類產生限制,所以就可以利用抽象類和抽象方法來解決此類問題。

抽象類無法例項化。(即使沒有抽象方法)

抽象類的子類(如果不是抽象類),那麼必須要覆寫抽象類中的全部抽象方法。

抽象類可以利用物件的向上轉型機制,通過子類物件進行例項化操作。

抽象類不能使用final關鍵字來定義,因為抽象類必須有子類,而final不能子類。

外部抽象類上不允許使用static宣告,但是內部抽象類中可以使用static宣告,這樣表明的是乙個外部抽象類。

abstract class a

}class b extends a.b

}

抽象類中可以存在static方法,而且static方法不受例項化物件控制。

abstract class a

} public static a getinstance()

}public class abstractdemo

}

抽象類就是比普通類多了抽象方法而已,但是普通類中的所有結構抽象類都可以定義,包括:普通方法,構造方法,屬性,常量。而且子類物件也符合於物件例項化流程,預設先呼叫父類中的無參構造方法,而後在執行子類自己的構造操作。

abstract class a

public void fun()

public  abstract void print();//沒有方法體

}class b extends a

}public class abstractdemo

}

抽象類與普通類相比最大的好處就是強制定義了子類的實現要求。

本質上講抽象類就是比普通類多了一些抽象方法的定義而已。

在實際的設計之中,父類的設計是最重要的,普通類與抽象類相比,明顯抽象類的約束更加的嚴格,所以在實際的開發之中,幾乎不會出現普通類定義子類的情況,大多數都是繼承抽象類。

思考:

abstract class a

public abstract void print();

}class b extends a

public void print()

}public class abstractdemo

}

子類物件例項化之前一定要先例項化父類物件,也就是說此時,子類物件的屬性都沒有內容。

}現在在整個程式之中,如果某一類事物需要實現特定功能,那麼就必須按照action所定義的方法進行覆寫。這個時候子類必須按照父類提供的

模板編寫**。

寫給自己的JAVA工程師之路 多執行緒

在每乙個程序上可以繼續劃分多個執行緒,那麼執行緒的操作一定比程序要快,所以多執行緒的操作效能一定是要超過多程序的操作效能,但是所有的執行緒都一定是要在程序的基礎上進行劃分。所以程序一旦消失,執行緒一定會消失。執行緒永遠要依附於程序的存在。class mythread extends thread p...

寫給自己的JAVA工程師之路 物理層

1 物理層與資料鏈路層 物理層向資料鏈路層提供位元流的傳輸服務,資料鏈路層通過與物理層的介面,將待傳送的幀傳送到物理層 物理層不關心幀的結構,它將構成幀的資料只看成是待傳送的位元流。物理層的主要任務是 保證位元流通過傳輸介質的正確傳輸,為資料鏈路層提供傳輸服務。2 傳輸介質與訊號編碼 連線物理層的傳...

自己的工程師之路

玩積木 想起了小時候玩積木,一堆的積木,有幾種小塊有很多比如小方塊有很多,長方體有很多,圓柱體有很多,還有一些特殊的部件,如拱形橋,小窗戶,尖的屋頂這些起到連線作用或特殊作用的部件。有了這些,我們就能拼出很多不同的 建築 造型,比如造一棟房子,用長方體打個地基,用小方塊磊個牆,一面牆開個窗戶,再加乙...