| 
   2.3深入探討函數:      2.3.1構造函數、默認構造函數、 缺省構造函數       對于上面的實例,它已經能完成絕大部分工作了,但它還是不完善的,還有許許多多的細節等到我們去完善!也許有的同學已經注意到了,當我創建完“jingwei”這個對象時,這個對象的所有的屬性都是空的,也就是說:這個對象的姓名是未定的、年齡是未定的、性別是未定的、薪水是未定的、午餐也是未定的。而我們想把這些屬性都添加上去,就還要用對象調用相應的方法,去一個個修改!天啊,這簡直是太麻煩了!有沒有什么好方法能夠在我們創建對象的同時就完成了對屬性賦值的操作呢?哦不,應該說是對屬性的初始化呢?當然沒問題了,這就需要所謂的構造函數!      構造函數是類中最特殊的函數,它與析構函數的功能正好相反!      從特征上來說:1.它是編程語言中唯一沒有返回值類型的函數。      2.它的名稱與類的名稱必須要完全相同。      3.它必須被聲明為公共(public)的類型      4,可以對構造函數進行重載。      5.它在創建對象是自動被調用。      從功能上來說:1.它是對類中的屬性進行初始化。      其實,對于上面的程序來說我們沒有自己定義構造函數。但是,在這種情況下,系統會自動為我們定義一個“默認構造函數”。他會把數值變量自動賦值為0,把布爾行變量賦值為false等等(但在C++中,默認構造函數不初始化其成員)。如果程序員定義了構造函數,那么系統就不會再為你的程序添加一個缺默認造函數了。(在這里,我們提倡的是自己定義構造函數,而不是用系統的默認構造函數)      還是看個實例吧!這樣比較清楚一些!
 
 
 
  |   //employee.java      public class employee{      private String name; //員工姓名      private int age; //員工年齡      private char sex; //員工性別      private float emolument; //員工薪水      private boolean lunch; //員工午餐      //……等等      public employee(){ //這個就是“默認”構造函數      name = “jw”; //設置員工姓名      age = 20; //設置員工年齡      sex = “M”; //設置員工性別      emolument = 100; //設置員工薪水      lunch = false; //設置員工午餐      }      public void heater(){ //這個方法是用來加工員工的午餐      lunch = true;      }      //……等等      };  |  
    
 
 
    
 
  
 |