1. 程式人生 > >方法的遞歸與面向對象

方法的遞歸與面向對象

方法遞歸 對象

方法的遞歸:

方法的遞歸就是方法自調,自己直接或間接調用自己,類似於循環的一個效果。方法遞歸需要有一個明確的出口條件,不然就會死循環不斷的消耗內存導致堆棧溢出。例如:

技術分享

main方法不斷調用自己,因為沒有跳出條件所以進入了死循環,很快就會內存溢出。


正確的方法遞歸示例:

技術分享

這是一個使用遞歸算法解決斐波那契數列的示例。但是遞歸算法有一個硬傷就是方法的不斷調用會消耗大量的內存和CPU資源,遞歸的層次太多就會出現這種問題。所以一般需要遞歸層次太多的事情,就需要考慮用其他的算法來實現。


方法在調用時,上一個方法沒有結束是不會執行下面的代碼的,所以調用在結束前一直會占據著內存。例如:

技術分享

從示例可看出方法調用過程的一個現象。





面向對象:

面向對象是人類最自然的一種思考方式,它將所有預處理的問題抽象為對象,這樣就在程序開發中引入了面向對象設計的概念,面向對象設計實際上就是對現實生活中的對象進行建模操作。

現實世界中,隨處可見的一種事物就是對象,對象是事物存在的實體,例如:人類,書桌,電腦,高樓大廈等。人類解決問題的方式總是將復雜的問題簡單化,於是會思考這些對象都是哪些部分組成的。通常都會將對象劃分為兩個部分,即靜態部分與動態部分。靜態部分,顧名思義就是不能動、不會改變的部分,這個部分就被稱為對象的屬性,任何對象都會具備自身的屬性,例如一個人,其屬性包括身高,體型,性別,年齡等。人可以說話,行走,微笑,哭泣等,這些就是人所具備的動態部分,也就是對象的行為,人類通過探討對象的屬性和行為來了解對象。

在計算機的世界中,面向對象程序設計的思想要以對象來思考問題,首先要將現實世界的實體抽象為對象,然後考慮這個對象具備的屬性和行為。

面向對象和面向過程的區別主要是代碼上和編程思想上的區別。面向過程是以函數、結構體為準,面向對象則是萬事萬物皆對象,所有事情都當做對象來處理。面向對象更接近現實生活,更有擴展性和靈活性。



類:

類是對象的模板,是對象的設計藍圖。類是構建對象時所依賴的規範。對象就是符合某個類定義所產生出來的示例,簡而言之對象就是實例化的類。

類是世間事物的抽象稱呼,而對象則是這個事物相對應的實體,如果面臨實際問題,通常需要實例化類對象來解決。定義完一個類之後,可以根據這個類構建抽象出一個實體對象,最後通過實體對象來解決相關的實際問題。

java語言中,類中對象的行為是以方法的形式定義的,對象的屬性是以成員變量的形式定義的,而類包括對象的屬性和方法,所以類稱為對象的模板、設計藍圖。例如:

技術分享


本文出自 “12831981” 博客,請務必保留此出處http://12841981.blog.51cto.com/12831981/1974030

方法的遞歸與面向對象