正在閱讀:面向?qū)ο缶幊?我的思想(下)面向?qū)ο缶幊?我的思想(下)

2004-06-01 10:14 出處:CSDN 作者:flashmagic 責(zé)任編輯:linjixiong

  2.3深入探討函數(shù):
  
  2.3.1構(gòu)造函數(shù)、默認構(gòu)造函數(shù)、 缺省構(gòu)造函數(shù)
  


  對于上面的實例,它已經(jīng)能完成絕大部分工作了,但它還是不完善的,還有許許多多的細節(jié)等到我們?nèi)ネ晟疲∫苍S有的同學(xué)已經(jīng)注意到了,當(dāng)我創(chuàng)建完“jingwei”這個對象時,這個對象的所有的屬性都是空的,也就是說:這個對象的姓名是未定的、年齡是未定的、性別是未定的、薪水是未定的、午餐也是未定的。而我們想把這些屬性都添加上去,就還要用對象調(diào)用相應(yīng)的方法,去一個個修改!天啊,這簡直是太麻煩了!有沒有什么好方法能夠在我們創(chuàng)建對象的同時就完成了對屬性賦值的操作呢?哦不,應(yīng)該說是對屬性的初始化呢?當(dāng)然沒問題了,這就需要所謂的構(gòu)造函數(shù)!
  
  構(gòu)造函數(shù)是類中最特殊的函數(shù),它與析構(gòu)函數(shù)的功能正好相反!
  
  從特征上來說:1.它是編程語言中唯一沒有返回值類型的函數(shù)。
  
  2.它的名稱與類的名稱必須要完全相同。
  
  3.它必須被聲明為公共(public)的類型
  
  4,可以對構(gòu)造函數(shù)進行重載。
  
  5.它在創(chuàng)建對象是自動被調(diào)用。
  
  從功能上來說:1.它是對類中的屬性進行初始化。
  
  其實,對于上面的程序來說我們沒有自己定義構(gòu)造函數(shù)。但是,在這種情況下,系統(tǒng)會自動為我們定義一個“默認構(gòu)造函數(shù)”。他會把數(shù)值變量自動賦值為0,把布爾行變量賦值為false等等(但在C++中,默認構(gòu)造函數(shù)不初始化其成員)。如果程序員定義了構(gòu)造函數(shù),那么系統(tǒng)就不會再為你的程序添加一個缺默認造函數(shù)了。(在這里,我們提倡的是自己定義構(gòu)造函數(shù),而不是用系統(tǒng)的默認構(gòu)造函數(shù))
  
  還是看個實例吧!這樣比較清楚一些!


  //employee.java
  
  public class employee{
  
  private String name; //員工姓名
  
  private int age; //員工年齡
  
  private char sex; //員工性別
  
  private float emolument; //員工薪水
  
  private boolean lunch; //員工午餐
  
  //……等等
  
  public employee(){ //這個就是“默認”構(gòu)造函數(shù)
  
  name = “jw”; //設(shè)置員工姓名
  
  age = 20; //設(shè)置員工年齡
  
  sex = “M”; //設(shè)置員工性別
  
  emolument = 100; //設(shè)置員工薪水
  
  lunch = false; //設(shè)置員工午餐
  
  }
  
  public void heater(){ //這個方法是用來加工員工的午餐
  
  lunch = true;
  
  }
  
  //……等等
  
  };


  



  

察看評論詳細內(nèi)容 我要發(fā)表評論
作者筆名簡短內(nèi)容 發(fā)表時間
:

鍵盤也能翻頁,試試“← →”鍵
302 Found

302 Found


Powered by Tengine
tengine