<small>
方法重寫:
因?yàn)楦割惖姆椒M足不了子類需求時(shí),
要求子類對該方法進(jìn)行重寫,從而實(shí)現(xiàn)
子類自己的業(yè)務(wù)功能。
在一定程度上,父類方法是沒有業(yè)務(wù)代碼的,
則該方法徒有虛名,沒有方法體實(shí)現(xiàn)代碼。
此時(shí),可以將該方法體省略。
正課:
1、抽象
1)、抽象方法
a、為什么有抽象方法?
因?yàn)楦割惖姆椒M足不了子類需求時(shí),
要求子類對該方法進(jìn)行重寫,從而實(shí)現(xiàn)
子類自己的業(yè)務(wù)功能。
在一定程度上,父類方法是沒有業(yè)務(wù)代碼的,
則該方法徒有虛名,沒有方法體實(shí)現(xiàn)代碼。
此時(shí),可以將該方法體省略,定義成抽象方法。
b、抽象方法定義
普通方法:五要素
修飾符 返回值類型 方法名 (參數(shù)列表){方法體}
抽象方法:
修飾符 abstract 返回值類型 方法名 (參數(shù)列表);
特點(diǎn):
①、修飾符中有abstract關(guān)鍵字,表示抽象。
②、沒有方法體,連{}都沒有。
c、抽象方法的意義
提供統(tǒng)一的入口,有效的實(shí)現(xiàn)代碼功能擴(kuò)展。
d、抽象方法的使用
抽象方法只有方法名,沒有方法體,無實(shí)質(zhì)上的業(yè)務(wù)實(shí)現(xiàn)。
需要實(shí)體類,繼承抽象類,對抽象方法實(shí)現(xiàn)重寫,
從而實(shí)現(xiàn)方法的真實(shí)功能代碼,滿足業(yè)務(wù)需求。
實(shí)體類實(shí)現(xiàn)抽象類,重寫抽象方法,
調(diào)用的是重寫之后的方法。
2)、抽象類
a、抽象類定義
抽象類是特殊的特殊類。
含有抽象方法的類,必定是抽象類。
抽象類不一定含有抽象方法。
普通實(shí)體類:
[public] class 類名{ 類體 }
抽象類:
[public] abstract class 類名{ 類體 }
b、抽象類意義
抽象類含有構(gòu)造方法,但不可以實(shí)例化(創(chuàng)建對象)。
在一定程度上,實(shí)現(xiàn)了代碼的保護(hù)。
含有抽象方法的抽象類,可以通過繼承來實(shí)現(xiàn)。
不含有抽象方法的抽象類,本質(zhì)上就是對代碼保護(hù)。
c、抽象類使用
抽象類不可以實(shí)例化,但可以通過繼承關(guān)系來實(shí)現(xiàn)“實(shí)例化”。
//抽象類Animal無法實(shí)例化
Animal animal = new Animal();
//向上造型
Animal = animal = new Dog();
①、實(shí)體類繼承抽象類:
必須重寫抽象方法。
②、抽象類繼承抽象類:
可以暫時(shí)不重寫抽象方法,
直到實(shí)體類繼承抽象類為止。
3)、抽象方法、抽象類總結(jié)
a、父類中的某些方法,滿足不了子類的需求,
只有方法名,沒有方法體代碼,則可以被
定義成抽象方法。
b、抽象類是特殊的類:
含有抽象方法的類,必定是抽象類。
抽象類可以不含有抽象方法。
c、抽象類含有構(gòu)造方法,但不能實(shí)例化。
可以通過向上造型方式完成“實(shí)例化”。
d、實(shí)體類繼承抽象類,必須重寫抽象方法,
抽象類繼承抽象類,可以暫時(shí)不重寫抽象方法。