什麼是面向對象編程?

    什麼是面向對象?

    衆所周知,面向對象編程語言傑出的有Java,C++,C#,那麼什麼纔是面向對象編程思想呢?隨着Java的不斷深入,理解也變得不一樣了,在此談談我的一方理解。

    什麼是對象?

    既然是面向對象編程,那麼什麼是對象呢?在Java裏面Foo foo = new Foo()在這裏我們知道foo就是對象。對象是一個能達到某個目的的代碼集合。我們需要進行加法計算,那麼我們只需要調用foo.add(1,3);foo對象就能幫我們達到兩個數相加的目的。

    面嚮對象語言的特徵

  1. 繼承
  2. 封裝
  3. 多態

    這是面嚮對象語言必須具備的三大特徵,那麼在我理解看來,面嚮對象語言最核心的特徵是封裝,甚至於在某種意義來說,繼承和多態也是爲了實現更好的封裝,所以我們甚至可以說沒有封裝,也就沒有面向對象思想。對象的產生就是將一系列屬性和行爲封裝到對象中的過程。

    怎樣形成面向對象的思維

    找合適的對象做合適的事。當我們遇到一個想實現的功能的時候,先想着我該怎麼得到有這個功能的對象,再用得到的這個對象來替我們完成這個功能。做個簡單的例子,我在一個只負責做加法運算的類中有個做加法的功能,當我想在做完加法運算後再對結果開方,就不要在這個類中創建一個開方的方法,這樣就落入了下乘,我們應該想到的是得到一個有開方功能的對象,用這個對象來進行開方。

    怎麼創建合適的對象

    既然我們要找到合適的對象做合適的事,那麼我們怎麼創建這個合適的對象呢?在《代碼大全》裏有一句話,類應該具有單一功能職責,一個類和一個方法只能做一件事。既然說到創建類,在這裏就不可避免的要說下抽象和接口了。很多時候都搞不清楚什麼時候用抽象什麼時候用接口,在我的理解,抽象是對一類事物相同屬性(屬性指本身固有的,不發生變化的特性)的 抽象,接口是對行爲的抽象。舉個例子:人本身固有的屬性有眼睛,鼻子,表達(),出生(),成長()這些都是本身的屬性,所以需要使用抽象。說英語(),說漢語()這些不是人所固有的,是人的一種行爲,所以應該用接口,人來實現這個接口,來達到人說哪種語言的目的。

    總結:使用合適的對象做合適的事

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章