把困難踩在腳下

          迎難而上

           

          java---構(gòu)造函數(shù)

          如果我們定義一個與類名相同的函數(shù)就是構(gòu)造函數(shù),我們可以在一個類中定義多個構(gòu)造函數(shù),但是這些構(gòu)造函數(shù)的列表參數(shù)必須不同(個數(shù)或者數(shù)據(jù)類型)。如果我們沒有定義一個構(gòu)造函數(shù),系統(tǒng)就會給這個類定義一個默認(rèn)的構(gòu)造函數(shù),這個構(gòu)造函數(shù)沒有參數(shù)。如果我們定義了構(gòu)造函數(shù)那么系統(tǒng)定義的構(gòu)造函數(shù)就會被覆蓋。下面用程序來說明。
          程序1:
          class YuanGong{
                   private int   id;
                   private String name;
                   private float salary;
                   private String depart;
                   public void say(){
                   System.out.println("員工號:"+'\t'+id);
                   System.out.println("   姓名:"+'\t'+name);
                   System.out.println("   薪水:"+'\t'+salary);
                   System.out.println("   部門:"+'\t'+depart);
                }
                  public void setId(int id){
                   this.id=id;
                }
                 public int getId(){
                  return id;
                }
                 public void setName(String name){
                  this.name=name;
               }
                public String getName(){
                 return name;
               }
               public void setSalary(float salary){
                this.salary=salary;
               }
               public float getSalary(){
                return salary;
               }
               public void  setDepart(String depart){
               this.depart=depart;
               }
               public String  getDepart(){
               return depart;
               }
          }
          public class Test1{
               public static void main(String args[]){
               YuanGong p=new YuanGong();
               p.say();
               p.setId(50);
               p.setName("哈哈");
               p.setSalary(2000);
               p.setDepart("商務(wù)");
               p.say();
              }
          }
          上面程序的輸出結(jié)果如下圖所示:

          我們看到在程序并沒有定義構(gòu)造函數(shù)YuanGong(),這是系統(tǒng)定義的,而且還沒有參數(shù)。
          程序2:
          class YuanGong{
                   private int   id;
                   private String name;
                   private float salary;
                   private String depart;
                   YuanGong(int id){
                   this.setId(id);
                   this.setName("未確定");
                   this.setSalary(1000);
                   this.setDepart("后勤");
                   }
                   YuanGong(int id,String name){
                   this.setId(id);
                   this.setName(name);
                   this.setSalary(3000);
                   this.setDepart("技術(shù)");
                  }
                   YuanGong(int id,String name,float salary,String depart){
                   this.setId(id);
                   this.setName(name);
                   this.setSalary(salary);
                   this.setDepart(depart);
                 }
                  YuanGong(){
                 }
                  public void say(){
                   System.out.println("員工號:"+'\t'+id);
                   System.out.println("   姓名:"+'\t'+name);
                   System.out.println("   薪水:"+'\t'+salary);
                   System.out.println("   部門:"+'\t'+depart);
                }
                  public void setId(int id){
                   this.id=id;
                }
                 public int getId(){
                  return id;
                }
                 public void setName(String name){
                  this.name=name;
               }
                public String getName(){
                 return name;
               }
               public void setSalary(float salary){
                this.salary=salary;
               }
               public float getSalary(){
                return salary;
               }
               public void  setDepart(String depart){
               this.depart=depart;
               }
               public String  getDepart(){
               return depart;
               }
          }
          public class Test2{
               public static void main(String args[]){
               YuanGong p1=null;
               YuanGong p2=null;
               p1=new YuanGong(10);
               p2=new YuanGong(20,"張三");
               p1.say();
               p2.say();
               p1=new YuanGong(30,"李四",5000,"財政");
               p2=new YuanGong();
               p1.say();
               p2.say();
               }
          }
          此程序的輸出結(jié)果如下圖所示:

          在此程序中我們定義了四個構(gòu)造函數(shù),分別是單參、雙參、四參和沒有參數(shù)。我們可以看到最后沒有參數(shù)的構(gòu)造函數(shù)的結(jié)果和程序1初始化的結(jié)果一樣。
          看程序3:
          class YuanGong{
                   private int   id;
                   private String name;
                   private float salary;
                   private String depart;
                   YuanGong(int id){
                   this.setId(id);
                   this.setName("未確定");
                   this.setSalary(1000);
                   this.setDepart("后勤");
                   }
                   YuanGong(int id,String name){
                   this.setId(id);
                   this.setName(name);
                   this.setSalary(3000);
                   this.setDepart("技術(shù)");
                  }
                   YuanGong(int id,String name,float salary,String depart){
                   this.setId(id);
                   this.setName(name);
                   this.setSalary(salary);
                   this.setDepart(depart);
                 }
                   public void say(){
                   System.out.println("員工號:"+'\t'+id);
                   System.out.println("   姓名:"+'\t'+name);
                   System.out.println("   薪水:"+'\t'+salary);
                   System.out.println("   部門:"+'\t'+depart);
                }
                  public void setId(int id){
                   this.id=id;
                }
                 public int getId(){
                  return id;
                }
                 public void setName(String name){
                  this.name=name;
               }
                public String getName(){
                 return name;
               }
               public void setSalary(float salary){
                this.salary=salary;
               }
               public float getSalary(){
                return salary;
               }
               public void  setDepart(String depart){
               this.depart=depart;
               }
               public String  getDepart(){
               return depart;
               }
          }
          public class Test3{
               public static void main(String args[]){
               YuanGong p1=null;
               YuanGong p2=null;
               p1=new YuanGong(10);
               p2=new YuanGong(20,"張三");
               p1.say();
               p2.say();
               p1=new YuanGong(30,"李四",5000,"財政");
               p2=new YuanGong();
               p1.say();
               p2.say();
               }
          }
          這個程序編譯的時候就會出現(xiàn)如下圖所示的錯誤:

          程序3與程序2的區(qū)別就是少了一個無參的構(gòu)造函數(shù),這樣做就驗證了“如果類中定義了新的構(gòu)造函數(shù)就會覆蓋系統(tǒng)定義的構(gòu)造函數(shù)”。程序2同樣也覆蓋了系統(tǒng)定義的構(gòu)造函數(shù)只不過我們又新建了一個無參的構(gòu)造函數(shù),這就造成了程序2中無參函數(shù)的輸出結(jié)果與程序1初始化的輸出結(jié)果相同。

          posted on 2010-10-16 17:24 馮魁 閱讀(2079) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計

          公告

          快樂每一天!

          Everything is an object!

          常用鏈接

          留言簿(2)

          隨筆檔案

          學(xué)習(xí)網(wǎng)站

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 盱眙县| 怀来县| 洛扎县| 虞城县| 阿图什市| 六安市| 南城县| 怀宁县| 安远县| 如东县| 富川| 泰安市| 望江县| 蓝田县| 民县| 东乡| 广昌县| 自治县| 三门县| 上林县| 大兴区| 广德县| 姚安县| 海淀区| 阳山县| 乌什县| 连南| 津南区| 武强县| 大港区| 门源| 保亭| 若尔盖县| 广河县| 华蓥市| 郧西县| 龙游县| 寻甸| 平邑县| 霍林郭勒市| 安泽县|