第一章 物件導向基礎

2021-04-12 17:47:12 字數 2295 閱讀 3263

一、物件導向的基本特性

以下五個基本特性詳盡的表現了一種純粹的物件導向的程式設計方式:

1. 萬物皆為物件

將現實世界裡的任何事物(當然是和你程式設計相關的)表示為物件,它可以用來儲存資料,如顧客,汽車等,也可以提供給客戶端程式員(即呼叫者)的構件,用來提供物件自身的操作,如一組相關的服務等。那麼你現在就可以建立乙個物件,比如你家的狗,我們可以儲存這個物件的一些資料,比如說它的名字:旺財,也可以對它執行一些操作,比如說讓它看家。只要和你的程式設計相關,我們基本上可以把世間萬物都看作是物件,如同前面提到的例子。

2. 程式是物件的集合,它們通過傳送訊息來告知彼此所要做的

乙個乙個的物件組成了我們所寫的程式,那麼它們之間怎麼互動呢?一堆沒有任何關聯的物件對於我們來說沒有任何意義。在這裡,我們首先要理解的是「訊息」指的是什麼。一般認為訊息就是物件提供的方法,但是訊息是個動態的概念,訊息的產生必然有訊息的請求者和訊息的接受者,當物件a向物件b傳送一條訊息時,物件a是請求者,物件b是接受者(或者理解為提供服務者),此時我們可以把訊息想象為物件a對物件b的某個特定方法(或者服務)的呼叫請求。這樣物件和物件之間才能彼此合作來完成程式所需要的功能。

3. 每個物件都擁有自己的由其他物件所構成的儲存

這句話理解起來有點抽象,簡而言之就是可以通過現有物件建立出新的物件,那麼在儲存新的物件的同時,它也儲存了構件它的其他物件。比如現有物件為機箱,顯示器,輸入/輸出裝置等,我們建立乙個電腦物件,它是由現有的這些物件構成的,那麼在儲存電腦這個物件的時候也就儲存了機箱,顯示器,輸入/輸出裝置等物件。

4. 每個物件都擁有其型別

現在就要引入「類」這個概念了。首先看乙個例子,聯想電腦是乙個物件,戴爾電腦也是乙個物件,他們都具有名稱,長,寬,高等等相同的特性以及開機,關機等等相同的方法,按照正常的思維,我們必然會把他們歸屬為一類——電腦。此時,不管是「聯想電腦」還是「戴爾電腦」,它們都有乙個型別——電腦。我們現在可以稱「電腦」為一種型別(即類),而「聯想電腦」或者「戴爾電腦」是這個類的具體的例項(即物件)。類與類之間最重要的區別在於可以傳送怎樣的請求給它。

5. 某一特定型別的所有物件都可以接受同樣的訊息

這裡提到的「可替代性」是物件導向設計中最強有力的概念之一。正如前面所看到的例子,開機這個訊息(即類的方法)並不是和某個具體的物件(如聯想電腦)相關聯,只要是「電腦」這個特定型別的物件,都可以接受這個訊息。

二、類與物件的關係

1. 「類」與「原始型別」

我們所熟悉的原始型別如int型別,它從本質上講也是乙個類,它描述了所有int型數字具有的相同的特性和操作。它們之間的區別在於,int型別是用來表示機器中的儲存單元的資料型別,並不能象「類」一樣隨意新增新的資料型別進行擴充套件,建立滿足需要的型別。編譯器完全接受這種自己建立的類,並且象對待原始型別一樣地照管他們和進行型別檢查。

2. 「類」與「物件」

每個物件都是某個類的乙個例項;每個類都是某一組物件的抽象。可以理解為類是抽象的,物件是具體的。比如說現實生活中並沒有電腦這個實體,只有某某牌的電腦,此時電腦這個類就是一種抽象,而某某牌的電腦才是乙個具體的實體(即物件)。值得注意的是,每個物件都屬於定義了特性和行為的某個特定的類。

三、類1. 類的隱藏

一般將程式開發人員分為類建立者(建立資料型別)和類呼叫者(使用資料型別),那麼類建立者如何隱藏類中不提供給類呼叫者的部分呢?在回答這個問題之前我們先來看看為什麼要隱藏。第乙個原因是讓類呼叫者無法觸及他們不應該觸及的部分,比如說內部實現必須的操作,它們並不是提供給類呼叫者的服務,我們不應該暴露它們。第二個原因是允許類建立者可以改變類內部的工作方式而不用擔心會影響到類呼叫者。訪問控制可以很好的為我們解決這些問題。通過宣告乙個私有的方法來隱藏這個方法,使得它僅僅能夠為本類提供服務。

2. 類的復用

組合(has - a):只要能夠實現想要的功能,我們可以使用任意數量、任意型別的其他物件以任意的方式組成新的 類。如汽車擁有輪胎、引擎等等。

繼承(is - a 或者 is - like - a):當兩個類具有相同或相似的特性和行為時,我們可以抽象出它們所共享的特性和行為,產生乙個它們共同的父類(或基類),然後讓這兩個類來繼承這個共同的父類,我們稱之為子類(或派生類),那麼子類便擁有了父類所有的特性和行為,如同兒子繼承了父親的所有遺產一樣。那麼什麼是is-a,什麼又是is-like-a呢?如果子類繼承父類時沒有新增新的屬性或方法或者只是覆蓋了父類的方法,這也就意味著子類和父類具有完全相同的屬性和行為,簡言之就是具有相同的型別,那麼我們稱這種繼承是is-a關係,即子類是乙個父類;如果子類繼承父類時新增了新的屬性或方法,這也就意味著子類擴充套件了父類並建立了新的型別,具有新的不同於父類的屬性和行為,簡言之就是具有相似的型別,那麼我們稱這種繼承是is-like-a關係,即子類像乙個父類。通過這兩種方式都可以實現了類的繼承,只要仔細審視,它們的應用場合應該是相當明顯的。

物件導向第一章

什麼是類?類是一組具有相同屬性和方法的物件的集合。什麼是物件?用來描述客觀事物的乙個實體,由一組屬性和方法構成。方法和屬性是什麼?方法 物件執行的操作 屬性 物件具有的各種特徵 eclipse常用快捷鍵有哪些?ctrl shift f 格式化 ctrl 調整字型大小 ctrl shift g 查詢類...

物件導向第一章

類的定義 類是具有相同屬性和方法的一組物件的集合 物件的定義 系統中用來描述客觀事物的乙個實體,由一組屬性和方法構成 方法和屬性的概念 方法 物件執行的操作 屬性 物件具有的特徵 方法過載 1 方法名一樣 2 引數列表不一樣 引數個數不同或者引數型別不同 package com.lenovo.www...

第一章 物件導向的基礎

demo1.php 怎樣去建立乙個類 格式 修飾符 class 類名 我們去建立乙個電腦的類,這類可以建立出物件 生產出電腦 class computer 建立一台電腦出來,也就是物件的宣告 格式 變數 new 類名 new computer 表示例項化的過程 意思是建立乙個物件 computer1...