1、抽象方法與空方法體的方法不同之處:
public abstract void tets();
是抽象方法,但下面的就是空方法體的方法
public void test(){}
2、抽象類和抽象方法規則:
- 抽象類和抽象方法必須使用abstract修飾符修飾
- 有抽象方法的類必須被定義爲抽象類,但抽象類可以沒有抽象方法(沒有抽象方法的抽象類,作用:不想被實例化,或者是讓它的子類各取所需,只覆蓋要用的方法即可,如HttpServlet)
- 抽象類不能被實例化
- 抽象類可以包含成員變量、方法(普通和抽象方法都行)、構造器、初始化塊、內部類(接口、枚舉等)。抽象類的構造器不能用於創建實例,主要用來被其子類調用
- final(表示不能被繼承或重寫)與abstract(表示需要繼承或重寫)不能同時使用
- abstract不能修飾成員變量、局部變量、構造器
- static(表示方法屬於類)與absrtact不能同時修飾某個方法(通過該類調用了一個沒有方法體的方法會報錯
- private(子類不可見)與abstract不能同時修飾方法
3、抽象類的作用
抽象類體現的是一種模板模式,從多個具體類中抽象出來的父類,以這個抽象類作爲子類的模板,子類在抽象類的基礎上進行擴展、改造,但子類總體上會大致保留抽象類的行爲方式。