看,在一個類中有兩個名稱相同的函數,可我們在使用的時候系統如何知道我們調用的是那個版本的函數呢?呵呵,我剛剛說過了,可以通過函數的參數類型、參數數量、返回值類型來確定,F在我們接著試驗,我們創建兩個對象其中的一個調用帶參數的構造函數,第二個對象調用缺省值的構造函數。我們來看看結果:
jingwei = new employee("jingwei",20,'M',100,false);/*創建這個對象的時候調用的是帶參數的構造函數*/
flashmagic = new employee();//創建這個對象是調用的是卻省值的構造函數
而得到的結果呢?讓我們一起來看一看!
Jingwei這個對象中: flashmagic這個對象中:
name jingwei name jw
age 20 age 20
sex M sex W
emolument 100 emolument 99
lunch false lunch true
看,雖然是兩個名稱完全相同的函數,但完成了不同的工作內容。呵呵!關于函數重載我們就料到這里吧,我相信你已經有個大印象了,而更詳細的內容仍需要你的努力!
重載普通的函數與重載構造函數大同小異,不過他多了一個this指針!this一般是對當前對象的引用。這么說吧,如果涉及到兩個以上的對象時就會使用this指針。每個成員函數都有一個this指針,它是一個隱藏的參數,this指針只向調用它的對象!我說過方法只有一份,而對象都有自己的屬性,當對象調用方法來先是屬性的時候,他怎么來判斷調用的時不是自己的屬性呢?這就需要this指針來大顯神威了。
關于拷貝構造函數、內聯函數、虛函數、模版等歐就不做過多的討論了,因為JAVA中好像沒有這些了。不過我需要提醒你一下的是,在C++中,類內定義的函數自動轉換為內聯函數,而這好像與我前面提到的思想有沖突。因為內聯函數的目的是減少函數調用的開銷!呵呵!我也沒繞出來呢!還請哪為大蝦指點一二!謝!
文章來源于領測軟件測試網 http://www.kjueaiud.com/