一、抽象方法和抽象類的概念和使用
在之前的課程中學習了方法的覆寫(子類覆寫父類的方法),也就是子類可以重寫父類的方法,但是這是可選的(你可以覆寫也可以不覆寫在語法上都不會出現問題的),如果有一個需求:要求父類的某個方法必須被子類覆寫,那么就需要將父類的
這個方法定義為抽象方法(強制要求被覆寫),如果一個類中出現了抽象方法那么這個類必須定義為抽象類,抽象類和抽象方法的定義語法:
●定義抽象類: public abstract class 類名{};
●定義抽象方法: public abstract 返回值類型 方法名();
[抽象方法沒有方法體]
DEMO:定義一個抽象類

以上定義了一個抽象類,可以使用該抽象類實例化一個對象嗎?
DEMO:使用抽象類實例化對象

發現了不能使用抽象類的構造方法實例化對象,如果不能實例化對象那么抽象類中的所有操作(屬性和方法)都沒有任何意義,因為不能訪問啊,此時可以通過子類來繼承抽象類中的操作,讓子類對象去調用。
DEMO:定義抽象類的子類.

此時定,義了抽象類的子類,但是要求子類必須覆寫父類的所有抽象方法。使用將父類的方法定義為抽象方法的方式來實現強制要求覆寫某個方法的目的。
但是有一種情況可以不要求子類覆寫父類的所有抽象方法,如果子類也是一個抽象類的時候可以不覆寫父類的抽象方法。
DEMO:子類是抽象類

此時可以選擇性覆寫父類的抽象方法。
總結:
1、定義抽象類和抽象方法使用的關鍵字是“abstract"
2、抽象類被叫做一個不完整的類因為它有自己的構造方法,但是卻不能直接實例化對象,他的抽象方法沒有方法體。
3、如果子類不是一個抽象類那么必須覆寫父類的所有抽象方法
面試題:
1、抽象類中可以沒有抽象方法嗎?
答:可以的
2、如抽象類沒有抽象方法,那么可以直接實例化對象嗎?
答:不可以,因為沒有抽象方法它依然是-一個抽象類
3、抽象類的方法必須被子類覆寫嗎?
答:不一定,如果子類是一個普通類則必須全部覆寫,如果子類是一個抽象類則不強制要求全部覆寫父類的抽象方法。
5、抽象類中的抽象方法的abstract關鍵字可以被省略嗎?
答:不可以(但是在后面的接口中可以省略)
有完整的Java初級,高級對應的學習路線和資料!專注於java開發。分享java基礎、原理性知識、JavaWeb實戰、spring全家桶、設計模式、分布式及面試資料、開源項目,助力開發者成長!
歡迎關注微信公眾號:碼邦主