類、構造器、屬性、方法
抽象的使用
就是父類無法全部具體實現(xiàn),而是由子類提供具體實現(xiàn)的,對象的,類
abstract:抽象的,可以用來修飾類、方法
abstract修飾類(抽象類)
①不可被實例化
②抽象類有構造器(凡是類都有構造器,為了保證創(chuàng)建類的時候有實例化的過程)
abstract修飾方法(抽象方法)
①格式?jīng)]有方法體、沒有{}。例如public abstract void eat();
②抽象方法只保留方法的功能,具體的執(zhí)行,交給繼承抽象類的子類,由子類重寫此抽象方法
③抽象方法所在的類一定是抽象類
④抽象類可以沒有抽象方法
⑤若子類繼承抽象類,重寫了所有的抽象方法:此類就能實例化,創(chuàng)建對象
⑥若子類繼承抽象類,沒有重寫所有的抽象方法:此類中仍然有抽象方法,則此類必須聲明為抽象的,那么此類就不能實例化,創(chuàng)建對象
⑦不影響多態(tài)的使用,還是調(diào)用子類的方法
抽象類的子類如果沒有重寫抽象類中的任何一個方法,那么這個子類必須也是抽象類,因為抽象方法所在的類必須是抽象類,否則不滿足抽象規(guī)則。要么重寫方法,要么定義抽象類。因為子類繼承了父類,子類可以調(diào)用父類非私有的方法,這一調(diào)用就調(diào)用到抽象方法上了。
抽象類:是在繼承基礎上衍生出來的,有繼承才有抽象,光抽象沒什么用
多態(tài):也是在繼承基礎上衍生出來的,將子類賦給父類,用父類對象調(diào)用子類的方法
注意
abstract不能修飾:屬性、構造器
屬性
①規(guī)定不讓用
②這是一種思想,抽象的目的①對于類來講,不能讓此類實例化②對于方法來講,讓子類重寫(子類可以覆蓋)。
③屬性不能覆蓋,子類用子類的,父類用父類的,都存在堆空間
構造器
①因為構造器不能重寫
abstract不能和private、final、static共用
private:私有的,出了類就能訪問,子類不能覆蓋(或重寫)聲明為private的方法
final:最終的,不能被重寫,而abstract又需要子類重寫父類的方法
static:可以修飾屬性、方法、代碼塊、內(nèi)部類
因為一個聲明為靜態(tài)的就可以通過類來調(diào)用,而abstract修飾的不能調(diào)用