熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java 封閉之構造函數

2013-11-23 19:31:53  來源: Java核心技術 
    構造函數

  構造函數是什麼?

  在堆內存中創建對象的時候對象均需要初始化初始化的動作就有構造函數來實現事實上每個類在創建對象且初始化的時候均調用了一個隱式構造函數 用戶在程序若重寫聲明構造函數則是顯式構造函數JVM在執行的時候則以用戶定義的構造函數為主

  構造函數特點:

  <>函數名必須與類名保持一致

  <>沒有類型定義即是沒有voidintString類類型等等數據類型的修飾

  <>不可存在return語句

  <>可以通過方法重載的方式來區別不同對象的初始化方式

  比如Person類對象的初始化就如剛剛誕生的嬰兒那般有的嬰兒出生前還沒有取好名字但出生後稱了體重;有的出生前已經取好了名字且出生後也稱了體重但是不管怎麼樣嬰兒都是哭著來到這個世界的所以都共同擁有一個方法cry()


    class Person{ 
     
        private String name; //姓名 
        private int weight;  //出生體重 
        private int order;   //編號 
         
        //不取名字 也不稱重 
        Person(){ 
          Systemoutprintln(Order: + order +  do nothing!); 
          cry(); 
        } 
        //取好名字未稱體重 
        Person(int order String name){ 
            Systemoutprintln(Order: + order +Name is:  + name); 
            cry(); 
        } 
        //未取名字但稱體重 
        Person(int orderint weight){ 
            Systemoutprintln(Order: + order +Weight is:  + weight+ Kg); 
            cry(); 
        } 
        //取了名字稱了體重 
        Person(int orderString nameint weight){ 
            Systemoutprintln(Order: + order +Name is:  + name + Weight is : + weight +Kg); 
            cry(); 
        } 
     
        //但是都是哭著來的 
        void cry(){ 
            Systemoutprintln(Crying when birth!); 
        } 
     
        public static void main(String[] args){ 

             Person child = new Person(); 
             Systemoutprintln(華麗的分割線); 
             Person child = new Person(Smith); 
             Systemoutprintln(華麗的分割線); 
             Person child = new Person(); 
             Systemoutprintln(華麗的分割線); 
             Person child = new Person(John); 
        } 
    } 
     
    /*運行結果如下: 
    Order: do nothing! 
    Crying when birth! 
    華麗的分割線 
    Order:Name is: Smith 
    Crying when birth! 
    華麗的分割線 
    Order:Weight is:  Kg 
    Crying when birth! 
    華麗的分割線 
    Order:Name is: JohnWeight is :Kg 
    Crying when birth! 
    */ 

  上面的代碼描述了構造函數的基本特點一個空參數的構造函數三個帶有不同參數變量的構造函數在實例化對象的時候便有了不同的實現方式

  構造函數出現的時機:

  在定義類的時候分析現實世界中具體事物的時候若該事物存在或者具備一些特性或者行為那就將這些內容定義到構造函數中如例子中的嬰兒具有的特性就是體重等一些生理指標和名字標示符行為動作就是出生後先哭

  構造代碼塊

  是將重載的構造函數中所具有的共同的功能或者特性再次抽取出來放在一起執行

  格式在程序中寫一對大括號 { } 即可與構造函數具有同樣的域范圍即可然後將共有的特性抽取到括號內比如cry(); 注下面程序中紅色部分

  並且是先於構造函數執行的  可以參考下面代碼執行的結果

  如下面的代碼


    class Person{ 
     
        private String name; //姓名 
        private int weight;  //出生體重 
        private int order;   //編號 
     
        //構造代碼塊 
        { 
          cry(); 
        } 
         
        //不取名字 也不稱重 
        Person(){ 
          Systemoutprintln(Order: + order +  do nothing!); 
        } 
        //取好名字未稱體重 
        Person(int order String name){ 
            Systemoutprintln(Order: + order +Name is:  + name); 
        } 
     
        //未取名字但稱體重 
        Person(int orderint weight){ 
            Systemoutprintln(Order: + order +Weight is:  + weight+ Kg); 
        } 
     
        //取了名字稱了體重 
        Person(int orderString nameint weight){ 
            Systemoutprintln(Order: + order +Name is:  + name + Weight is : + weight +Kg); 
        } 
     
        //但是都是哭著來的 
        void cry(){ 
            Systemoutprintln(Crying when birth!); 
        } 
     
        public static void main(String[] args){ 
         
             Person child = new Person(); 
             Systemoutprintln(華麗的分割線); 
             Person child = new Person(Smith); 
             Systemoutprintln(華麗的分割線); 
             Person child = new Person(); 
             Systemoutprintln(華麗的分割線); 
             Person child = new Person(John); 
        } 
    } 
    /*執行結果如下: 
    Crying when birth! 
    Order: do nothing! 
    華麗的分割線 
    Crying when birth! 
    Order:Name is: Smith 
    華麗的分割線 
    Crying when birth! 
    Order:Weight is:  Kg 
    華麗的分割線 
    Crying when birth! 
    Order:Name is: JohnWeight is :Kg 
    */ 

  以上就是構造函數最基本的應用了當然構造函數在子類繼承父類的時候還有要注意的地方和細節會在記錄繼承特性的時候補充還望指正


From:http://tw.wingwit.com/Article/program/Java/hx/201311/27044.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.