1. 程式人生 > >多態的理解

多態的理解

我們 system 驅動 多態 重寫 ast pos int lang

今天有開始對多態的理解加深了,基礎不好的話看別人的程序很麻煩了,要不斷地測試,測試……然後想想為什麽,為什麽……等過了一兩年再看原來的基礎代碼的時候友開發犯迷糊了,又開始犯迷糊,然後測試測試……回憶一下為什麽這樣那樣……
Father{
視察(){
System.out.println("大家好好工作啊,你們辛苦了!");
System.out.println("基層的每個官員給我賄賂300塊大洋,我保你們平安");
}
}
現在我們創建對象
Father father = new Father();
father.視察();//工作做完了,並且還撈了不少錢
現在老爹不想幹了,想退休了,兒子就可以繼任啦,但是以前的基層官員可沒退休,這群基層的只在乎你是不是有這個頭銜;
根據中國封建的世襲制,孩子是有這個頭銜的。為了讓兒子有這個頭銜,我們創建對象的時候就采用了繼承機制
Son extends Father{}
Son son = new Son();
son.視察();//(用老子的方法)工作做完了,又撈了不少錢
孩子們都繼承父親。這樣兒子就有了老爹的職能了。但是兒子每次撈的錢數和老爹每次的一樣。孩子心想啊,我要比老爹撈的多一點,不然人家罵我無能了。所以現在孩子都不用老爹的工作方式了,都改成自己的
Sonx extends Father{
視察(){
System.out.println("大家好好工作啊,你們辛苦了!");
System.out.println("以後基層的每個官員給我賄賂600塊大洋,我保你們平安");
}
玩樂(){
System.out.println("今天去了3家青樓!");
}
}
Sonx sonx = new Sonx();
sonx.視察();//(用自己的方法)工作做完了,又撈了不少錢
孩子們都覆蓋了老爹的工作方式了,這樣就可以打撈一筆了。
繼承的方式說完了,現在開始看看多態的方式吧。
現在孩子要去覲見皇帝老兒了,皇帝老兒以前只給孩子他爹授勛過而已,也只在乎你這個小屁孩是不是我那時候給授勛的那個大臣的孩子。所以孩子們就不得不“轉型”!既然皇帝老兒只認身份不認人,那我就“上轉型”成我老爹不就行了!於是孩子開始轉型了
Father son2father = son;
這樣皇帝老兒也知道了這個小毛孩是誰了,也給予這個小屁孩覲見的功能了。這時候皇帝老兒問孩子:“你每次去視察的時候每個官員收多少錢啊?”,不貪的(沒有重寫視察方法的那個孩子)son就回答說:“300塊大洋”;貪的那個孩子(重寫了視察方法的那個孩子)回答:“我比較上進,要求每個收600塊大洋”。皇帝老兒點點頭就讓這群小屁孩回去了。
現在,老子覺得在家裏呆著無聊,還想出去視察工作。這可不好辦了,現在人家認的是兒子而已,人家不認我了,我都已經把權利都交給孩子了,這可怎麽辦呢?我可以也轉轉型呀?
Sonx father2sonx = (Sonx)father;
father2son .視察();
老爹可以出去貪汙受賄了?你覺得人可以返老還童麽?你是上帝麽?上帝是你麽?
father2sonx.視察();
father2sonx.玩樂();
看到這裏你覺得這個老子貪心麽?很貪心是吧!!!既然你覺得這樣的老子很貪心,為什麽讓他這麽幹呢?我看不下去,相信你也看不下去。外國人更是看不下去了:“娘希匹,不準你轉,你以為上帝是你自己的啊?要轉我就給你拋異常(java.lang.ClassCastException)”
(這裏多態還沒講完^_^先和稀粥去,不拉稀的時候再過來這裏吹吹鼻子)

繼續說說多態吧。好久沒來了,先給這裏打掃打掃灰塵,上上香,各位大神走過的同時也給我留下點建議,學習學習,共同進步~~~
說到多態就要提到接口了,我覺得接口和抽象類的設計初衷是為多態服務的。怎麽理解呢,先來看看需求吧(萬物的發展都是以需求做驅動的)。繼續上面的例子-->
老子就快死翹翹了,但是老子不甘心自己死了就因此沒有了官位啊(先回家了^*^)

繼續理解變態(多態)設計
技術分享

多態的理解