天天看點

Java基礎——對象和類1(面向對象基本概念)Java基礎——對象和類1(面向對象基本概念)

Java基礎——對象和類1(面向對象基本概念)

一、程式設計思想

程式設計思想:需求——>建立思路——>目标代碼

面向過程的思想:自頂向下,逐漸求精

不适合用來解決一些比較複雜的問題

面向對象的思想

二、對象的基本概念

1,對象:無論什麼都是對象,一切客觀存在的事物

2,屬性:有什麼

3,方法:能做什麼

例如,對于一個汽車對象,這個對象有顔色、品牌、價格、 最高時速等屬性,有啟動、加速、轉向、刹車等方法。

對象不是孤立存在的,對象與對象之間會通過某種方式産生聯系。

一種方式是方法調用的關系。一個對象可以調用另一個對象的方法,進而在這兩個對象中産生關聯。即對象的方法使用者又是一個對象。例如,學生對象,可以調用老師對象的“講課”方法,司機對象可以調用汽車 對象的“行駛”方法,顧客對象可以調用廚師的“做飯”方法,等等。任何一個對象都可能 調用其他對象的方法,也可能提供方法供其他對象調用。

另一種方式是屬性組合的方式:一個對象的屬性,可能又是一個對象。例如,把主機、 鍵盤、滑鼠等等小對象,皆可看作是電腦這個大對象的屬性;以若幹個學生對象作為屬性, 組成了班級對象;若幹個書本對象,組成圖書館對象等等。

通過這兩種聯系方式,我們可以把一些功能相對簡單的對象組織在一起,形成複雜的系統。

客觀的世界是由對象組成的

1,小對象組成大對象

2,對象間彼此方法調用

例如,現實生活中,企業這個對象,往往是一個非常複雜的系統。然而,企業中每一個對象,每一個員工,要解決的問題總是相對簡單的。例如,在一個軟體企業中,程式員要解 決的問題就是程式設計,會計解決的問題就是算賬,銷售解決的問題就是獲得訂單,等等。但是, 雖然每個員工要解決的問題都相對簡單,但是當大量功能簡單的對象組合在一起之後,就能 形成一個非常複雜的企業系統。

解決客觀問題:面向對象的思想

1,把解決問題所需的對象準備好

2,對象如何配合完成需求

例如,假設我們要從北京出發到上海。為了完成這個任務,首先要做的,是應當确定,用什 麼方式去上海,是坐飛機?坐火車?還是自己開車?等等。

這是一個選擇交通工具的過程,也就是我們在選擇合适的對象來解決問題的過程。在這 個例子中,我們希望能夠選擇一個對象,這個對象能有一個“交通運輸”的方法。很顯然, 汽車、火車、飛機,都存在這個“交通運輸”方法。我們可以根據實際的情況,來選擇不同 的交通工具,并調用其“交通運輸”方法,進而完成從北京到上海這個目标。如果我們選擇 了“飛機”對象,那麼就需要調用“機票代理人”對象的“賣機票”方法,來獲得一個“機 票”對象。再調用“計程車”對象的“開車”方法,到達機場。利用手中的機票,調用“飛 機”對象的“登機”方法,“飛行”方法。進而到達目的地。

三、計算機中的對象

計算機需求來源于客觀世界

解決計算機問題,同樣可以采用面向對象的思想

設計電子商務網站,這是一個計算機領域的問題。但是,我們可以看到,這個問題的提出,是與現實世界緊密聯系的。也就是說,計算機程式設計要解決的問題,一定來自于現實生活。例如,軟體行業中有 word 軟體,是為了解決人們處理文檔的問題;有 excel 軟體,是為了解決人們統計資料以及做報表的需求;有QQ 軟體,是為了解決人們交流和溝通的需求„„ 等等。

  既然計算機世界的問題都來源于現實世界,那最好的辦法,就應當是讓計算機來模拟現 實世界。由于現實世界是一個面向對象的世界,是以,很自然的,我們就希望在計算機世界中,也引入面向對象的思想,這樣,程式員就可以利用現實生活中的經驗,更好的解決計算機的問題。

計算機中的對象:

1,JVM中連續的儲存空間(資料)

2,代表生活中的對象,生活中的對象在計算機中的抽象

通過抽象,我們就把現實中的對象,變成了計算機中的對象。 例如,我們對現實生活中的學生對象進行抽象,形成了計算機中的學生對象。抽象的時 候,保留了學生對象的這樣幾個屬性:姓名、年齡和學生成績。是以,對于一個計算機中的 學生對象而言,實際上就是在記憶體中的一塊資料區域。這塊區域中,有一個字元串,用來表 示姓名,有一個整數用來表示年齡,有一個 double 類型的數,用來表示學生的成績。在内 存中的表示如下:

Java基礎——對象和類1(面向對象基本概念)Java基礎——對象和類1(面向對象基本概念)

在記憶體中,我們配置設定出了一塊資料區域,在這塊區域中,包含了抽象出的學生對象的屬 性。這些資料作為整體出現,代表生活中的學生對象。是以,從本質上說,計算機中的對象, 就是在記憶體中的一塊資料區域。

通過把現實生活中的對象抽象成計算機中的對象,我們就可以在計算機世界中模拟出跟 現實世界中一樣的面向對象的世界。這樣,我們在進行程式設計的時候,就可以利用這種思想來解決問題。

四、面向對象的特點

1,各司其職

利用面向對象的思想,完成一個需求,可能會由多個對象共同參與。而組成系統的每個 6 對象,其功能應該單一。這就是對象的“各司其職”。

2,弱耦合性

弱耦合性指的是,讓對象和對象之間的聯系盡可能的弱。這樣有什麼優點呢?如果一個 對象跟周圍的聯系比較弱,那麼這個對象就可以很容易的被替換。

3,可重用性

所謂的可重用性,指的是對于類似的功能,不同的系統可以重複使用相同的代碼。這樣, 有些通用的功能,程式員寫了一遍之後,在遇到類似的功能之後,不需要從頭開始開發,隻 需要對這些通用的功能進行使用就可以了。

4,可擴充性

可擴充性指的是,在不修改原有系統的前提下,對系統的功能進行擴充。在面向過程的 程式設計方式中,如果要增加系統的功能,則大部分的過程就都必須要改變。

五、類的概念

1,對象共性的抽象

例如,現實生活中,存在許許多多的狗“對象”(小白、大黃、旺财、來福„„)。對于 一個不認識“狗”的嬰兒來說,當他見到越來越多的狗對象之後,慢慢的就能逐漸總結出, 這一類對象的特點:四條腿,會吃會跑會叫,會搖尾巴„„于是,慢慢的,他就認識了狗。 也就是說,在他的腦子中,形成了“狗”這個概念,狗這個“類”就包含在他的腦子中了。 也就是說,當人面對大量的對象之後,慢慢的會把對象的共性進行抽象,進而形成了 “類”。換句話說,類是對客觀事物的總結和抽象。

2,客觀對象在人腦中的主觀反映,類是人對對象的認識

與此同時,我們注意到,“類”是在人的腦子中形成的一個概念,也就是說,類是在人 腦子裡的,而不是一種客觀事物。我們可以認為,類就是客觀事物在人腦中的反映。

3,類是對象的模闆

而在計算機世界中,有另外一層含義:類能夠作為建立對象的模闆。也就是說,在計算 機中,如果定義了一個類,則可以利用這個類建立多個對象。

Java基礎——對象和類1(面向對象基本概念)Java基礎——對象和類1(面向對象基本概念)

如上圖所示,我們定義了一個 Student 類,規定了 Student 對象具有兩個屬性,String 類 型的姓名和 int 類型的年齡。之後建立四個對象,很顯然,這些對象都是以 Student 類作為 模闆建立起來的。