物件導向程式設計,我的思想 5

2022-09-24 13:54:12 字數 1571 閱讀 9234

2.3深入**函式:

2.3.1建構函式、預設建構函式、 預設建構函式

對於上面的例項,它已經能完成絕大部分工作了,但它還是不完善的,還有許許多多的細節等到我們去完善!也許有的同學已經注意到了,當我建立完「jingwei」這個物件時,這個物件的所有的屬性都是空的,也就是說:這個物件的姓名是未定的、年齡是未定的、性別是未定的、薪水是未定的、午餐也是未定的。而我們想把這些屬性都新增上去,就還要用物件呼叫相應的方法,去乙個個修改!天啊,這簡直是太麻煩了!有沒有什麼好方法能夠在我們建立物件的同時就完成了對屬性賦值的操作呢?哦不,應該說是對屬性的初始化呢?當然沒問題了,這就需要所謂的建構函式!

建構函式是類中最特殊的函式,它與析構函式的功能正好相反!

從特徵上來說:1.它是程式語言中唯一沒有返回值型別的函式。

2.它的名稱與類的名稱必須要完全相同。

3.它必須被宣告為公共(public)的型別

4,可以對建構函式進行過載。

5.它在建立物件是自動被呼叫程式設計客棧。

從功能上來說:1.它是對類中的屬性進行初始化。

其實,對於上面的程式來說我們沒有自己定義建構函式。但是,在這種情況下,系統會自動為我們定義乙個「預設建構函式」。他會把數值變數自動賦值為0,把布林行變數賦值為false等等(但在c++中,預設建構函式不初始化其成員)。如果程式設計師定義了建構函式,那麼系統就不會再為你的程式新增乙個缺預設造函式了。(在這裡,我們提倡的是自己定義建構函式,而不是用系統的預設建構函式)

還是看個例項吧!這樣比程式設計客棧較清楚一些!

public class employee

public void heater()

//……等等

};這樣,在我們建立「jingwei」這個物件的同時,它的所有的屬性也被初始化了!顯然,這大大的提高了工作效率,但是,它還是不符合要求。想想看,如果我們現在建立這個型別的第二個物件的時候會發生什麼事情?告訴你,除了物件的「名」(這個名稱不在是物件屬性中的名稱,而是物件本身的名稱)不一樣外,其所有的「屬性值」都一樣!比如:現在我們建立第二個物件flashmagic,然而我會發現這個物件的所有的屬性和jingwei這個物件的所有的屬性完全相同。而我們只能在用物件的方法去改變著寫屬性了!很顯然,這種方法不大好!我們需要一種方法在建立物件的時候為物件的屬性賦予「我們想要的值」。

相信你也看到了,預設建構函式就顯得無能為力了。我們需要的是帶引數的建構函式,在建立物件時,我們把引數傳給建構函式,這樣就能完成了上述的功能!口說無憑,還是來看個例項吧:

public class employee

public void heater()

//……等等

};這樣一來,在建立物件的同時我們就可以給他賦予我們想要的值,很顯然,這可就方便多了。哦,對了!還沒有告訴你怎麼建立呢!哈哈,往前翻幾頁你會看到這句話:

jingwei = new employee();這是建立乙個物件,而我們把它改成

jingwei = new employee("jingwei",20,'m',100,false);這樣一來,所有的工作都完成了,呵呵!(在建立物件的同時賦予了我們想要的「初值」)

本文標題: 物件導向程式設計,我的思想(5)

本文位址: /wangluo/jsp/24791.html

物件導向程式設計思想

舉個最簡單點的例子來區分 有一天要請客吃飯,怎麼辦?有兩個方法 1 買菜,買調料,買肉,買酒水,然後下廚房動手炒菜 2 去飯店,點個 看出來區別了嗎?方法1是面向過程,方法2是物件導向。物件導向有什麼優勢?首先不需要知道各種菜式是怎麼做的,降低了耦合性。如果突然想換 了,對於方法1可能不太容易,因為...

物件導向程式設計思想

所謂的物件導向,是一種程式設計思想,程式設計思路,的書寫格式,複雜程式的封裝,封裝成其他形式,使用物件導向的方式來封裝程式。物件導向 有封裝好的物件導向的的程式 直接呼叫執行就可以了 功能和作用類似於 封裝好的函式 但是 封裝的語法和思想與函式不同 物件導向的基本思想 基本思路就是,建立乙個物件,給...

物件導向程式設計思想

介面是為了處理各個物件之間的協作關係,是系統設計的關鍵部分,主要作用是為了將 定義 與 實現 分離,從而實現系統解耦的目的。在系統設計之初,我們要為抽象類建立行為模型 為什麼要面向介面程式設計?因為物件導向設計原則為我們提供了方法和原則 七大原則 開 面向擴充套件開放,面向修改關閉 口 介面隔離原則...