抽象方法
使用abstract修飾且沒有方法體的方法,稱為抽象方法
特點:
- 1.使用抽象++abstract++修飾支示,方法沒有方法體悔耘,留給子類去實現(xiàn)/覆蓋
- 2.抽象方法修飾符不能是private和final以及static
- 3.抽象方法必須定義在抽象類或者接口中
一般的:習慣性把abstract寫在方法修飾符最前面,一看就知道是抽象方法
public abstract class AbstractGraph{
abstract public double getArea();
}
子類必須覆寫抽象方法蔗崎,否則編譯會報錯
public class Point extends Graph{
public double getArea(){
return 0D;
}
}
抽象類
使用abstract關鍵字修飾的類酵幕。
特點:
- 不能創(chuàng)建實例。既不能new一個抽象類缓苛,即使創(chuàng)建出抽象類對象芳撒,調(diào)用抽象方法,根本沒有方法體。
- 可以不包含抽象方法笔刹,若一旦包涵芥备,該類必須作為抽象類,抽象類可以包含普通方法
- 若子類沒有實現(xiàn)父類所有的抽象方法舌菜,那么子類必須是抽象類(抽象派生類).
- 抽象類的構造方法不能都定義為私有的
- 抽象類不能使用final修飾(final不能有子類萌壳,而抽象類必須得有子類)。
- 抽象類是不完整的類酷师,需作為基類讶凉,必須要有子類功能才能得以實現(xiàn)。
什么時候使用抽象類
如果有多個類具有相同的方法聲明山孔,但具體實現(xiàn)不一樣懂讯,此時創(chuàng)建一個抽象類,將類作為該抽象類的子類台颠,子類中相同聲明的方法在父類中聲明成抽象方法褐望,然后在各個子類中覆寫抽象方法完成不同的實現(xiàn)細節(jié)。有的時候串前,為了防止實例化某一個類瘫里,我們也可以把該類作為抽象類
抽象類和普通類的區(qū)別
不能創(chuàng)建對象,允許(但不強制)包含抽象方法
一般的習慣把抽象類的類名都是使用abstract作為前綴荡碾,其目的是一眼就能看出是抽象類谨读。
模板方法模式應用的簡單規(guī)則:
抽象父類負責定義操作中的業(yè)務骨架,而把某些具體的實現(xiàn)步驟延遲到子類中去實現(xiàn)
抽象父類至少提供的方法:
- 模板方法:一種通用的處理方式坛吁,即模板劳殖;
- 抽象方法:一種具體的業(yè)務功能實現(xiàn),由子類完成拨脉;
注意:抽象父類提供的模板方法只是定義了一個通用算法.其實現(xiàn)必須依賴子類的輔助哆姻。