理解面向對象,首先理解要它的基礎概念:程序員
面向對象是將現實問題構建關係,而後抽象成 類 ( class ) ,給類定義屬性和方法後,再將類實例化成 實例 ( instance ) ,經過訪問實例的屬性和調用方法來進行使用。編程
在不一樣的語言中,對象的定義範圍不一樣。在 Python 中 類 和 類的實例 都稱爲 對象 ( Object ),由於 Python 的類是更頂級的 type 實例化後的對象;而在 Java 等靜態語言中,通常把類的實例稱爲對象。微信
理解了理論知識後,接着經過例子,再理解面向對象的三大特徵:封裝、繼承、多態。app
下邊咱們把女媧造人的神話故事用面向對象來敘述一遍:dom
假設咱們是女媧(程序設計者),咱們忽然有個想法,想造一羣和本身差很少的小人,小人須要有男女兩種性別,外觀和行爲也有一些差別。那首先咱們分析出,無論什麼性別,都應該有四肢,因此咱們先仿照本身的構造,在腦海中構思泥人的樣子(抽象成基類),而後先賦予泥人一些共有的行爲(定義類的實例方法):函數
而後咱們先捏3個泥人,並給他們取了不一樣的名字:spa
咱們讓其中一我的介紹本身:設計
而後咱們繼續完成想法,須要給泥人增長兩種性別,而且異性之間能結婚,咱們開始在剛纔泥人模型的基礎上(繼承於基類),構思出兩種性別的泥人的區別(設置不一樣的屬性),而後讓他們均可以工做,但工做的內容不同(調用相同的方法出現不一樣結果,是多態性),並決定讓男人能夠娶女人(將這個行爲定義爲男人的方法)。code
而後咱們就可讓小人活動起來:對象
看到這裏你應該會發現,面向對象是更接近人類思惟模式的編程思想,在這種能夠具象化的需求中,能夠極大簡化其中的邏輯,讓咱們關注於設計對象的屬性和方法。
雖然你確實能夠經過寫一長串函數來達到一樣的效果,那實際是另外一種編程思想:面向過程,經過函數實現過程當中一系列的功能,最後按順序組合後達成需求。
這並非面向過程弱於面向對象,而是在不一樣的需求中要選擇最合適的設計思路,好比在設計順序執行的腳本中,明顯面向過程的設計思路是更加適合,若是咱們還去定義類就有些累贅了。
這也是題主提出的疑問,正是由於沒有遇到適合面向對象的需求。
若是是擁有複雜關係的需求,咱們就應該儘量將互相有關聯的行爲抽象成類,好比每個網頁,網頁中每個組件 等等。實際上面向對象幫助咱們在十萬行代碼的大型項目中,仍然能夠遊刃有餘,正由於如此,才能發展爲目前應用最爲普遍的編程思想。
最後,不論是面向什麼編程,終究仍是要面向人生
歡迎關注個人微信公衆號:面向人生編程
不管什麼樣的編程思想,都不應只存留在代碼之中,更應伴隨於整我的生旅途,這個公衆號不僅聊技術,還會聊產品/互聯網/經濟學等普遍話題,因此也歡迎非程序員關注。