Java多態


多態不是方法的重載,不是方法名一樣方法的參數不一樣,不是一個參數有多種態度就稱之為多態,那是不正確的,如果這就是多態的話那么何必有方法

的重載?直接改名多態就行了。父類 a = 子類對象 就是子類對象可以披上父類的衣服,只要穿上了父類的衣服就裝扮成了父類 可以做父類的一些事情

靈活性強。多態最重要的目的就是為了讓子類轉換成父類。

  面向對象編程之上還有一種叫做面向功能編程,面向功能編程還可以轉換成面向父類編程。比如:現實生活中,有小寶、大寶 大寶是小寶的父親。

有一天大寶不在家,小寶接到打給大寶的電話 讓大寶今天去喝喜酒,那么大寶不在家,就只能打扮成了大寶去參加宴席喝喜酒。走到了宴席別人都以為

是大寶,其實是小寶打扮成了大寶代替了大寶參加了宴席。這個故事告訴我們子類可以裝扮成父類去做父類能做的一些事情,他的靈活性是非常的強的。

這頓飯對於別人來說吃到了小包的肚子里,但是其實是吃到了小寶的肚子里了。這就是子類頂替了父類做事情。

  從編程的角度就是萬事萬物為對象,從設計的角度程序架構的角度那么就是面向功能、面向父類。多態不是功能上的提升不是功能上的奉獻 不是說

添加、刪除、修改必須依賴多態。多態而是一種程序架構的思想。我們最關心的是功能的使用,並不關心功能的實現。在現實生活中我們用任何的東西我

們都不在乎他的實現。

  要是想做優秀的程序設計師那么腦子里就要形成面向功能思想。我們設計程序不要去依賴子類,依賴了子類那么如果子類需要替換升級而程序就會發

生了改變。我們不能讓程序發生改變那么就要讓父類統一類型的規范,然后讓子類進行具體的實現。如果發現子類不能實現了子類有問題了,那么就可以

重寫替換子類就可以了,這樣才能給程序打來很大的靈活性。手機電腦壞了可以換一部,不是說壞了就不用了。所以只是僅僅依賴了這個電腦的功能罷

了。我們做編程也要如此,我們只面向父類編程,讓子類去做具體的實現,今后我們就可以隨意的更換子類,這就程序就不會出現任何的問題。

  硬寫法:硬寫法是死代碼的書寫格式,他的代碼書寫擴展性非常的差,只有打開源碼進行修改,才能做到擴展。比如:A是父類 B和C是子類 然后B

b=new B();這是子類new子類。如果要把B修改成C的子類那么我們就要C c =new C();

  軟寫法:軟寫法代碼只要做一個小小的變動就能擴展升級替換里面的操作。比如:A是父類 B和C是子類 然后A a = new B();今后我們要new C的

子類,那么我們只需這樣A a = new C(); 我們看不出父類后面new的是誰,這樣很靈活,不管后面new的是誰,我們是看不到的 不知道他new的是

誰,反正他會給你對象。多態從代碼的角度就是子類可以轉換成父類,多態他沒有給我們功能,他並不是功能上的增加,多態只是代碼的寫法,一種架構

的改變。是我們設計程序思想性的一種轉變。例題如圖8.7所示:

  圖8.7

  然后我們想把子類C繼承B那么就只需修改后面的部分,如果8.71所示:

  圖8.71

  子類C裝扮成父類之后無法調用C子類獨立自己的方法,因為C已裝扮成父類A,那么就必須脫掉父類的衣服才能調用自己獨立的方法。如圖8.72所示:

  圖8.72

  如果子類裝扮成父類之后,就不可以直接的進行訪問子類里面的方法,需經過強制轉換才可以進行調用。習題8.73所示:

  圖8.73

  圖8.73

技術分享:www.kaige123.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM