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

用構建器自動初始化

2013-11-23 17:57:04  來源: Javascript 

  
  對於方法的創建可將其想象成為自己寫的每個類都調用一次initialize()這個名字提醒我們在使用對象之前應首先進行這樣的調用但不幸的是這也意味著用戶必須記住調用方法在Java中由於提供了名為構建器的一種特殊方法所以類的設計者可擔保每個對象都會得到正確的初始化若某個類有一個構建器那麼在創建對象時Java會自動調用那個構建器——甚至在用戶毫不知覺的情況下所以說這是可以擔保的!
  接著的一個問題是如何命名這個方法存在兩方面的問題第一個是我們使用的任何名字都可能與打算為某個類成員使用的名字沖突第二是由於編譯器的責任是調用構建器所以它必須知道要調用是哪個方法C++采取的方案看來是最簡單的且更有邏輯性所以也在Java裡得到了應用構建器的名字與類名相同這樣一來可保證象這樣的一個方法會在初始化期間自動調用
  下面是帶有構建器的一個簡單的類(若執行這個程序有問題請參考第章的賦值小節)
  
  //: SimpleConstructorjava
  // Demonstration of a simple constructor
  package c;
  
  class Rock {
   Rock() { // This is the constructor
    Systemoutprintln(Creating Rock);
   }
  }
  
  public class SimpleConstructor {
   public static void main(String[] args) {
    for(int i = ; i < ; i++)
     new Rock();
   }
  } ///:~
  
  現在一旦創建一個對象
  new Rock();
  就會分配相應的存儲空間並調用構建器這樣可保證在我們經手之前對象得到正確的初始化
  請注意所有方法首字母小寫的編碼規則並不適用於構建器這是由於構建器的名字必須與類名完全相同!
  和其他任何方法一樣構建器也能使用自變量以便我們指定對象的具體創建方式可非常方便地改動上述例子以便構建器使用自己的自變量如下所示
  
  class Rock {
   Rock(int i) {
    Systemoutprintln(
     Creating Rock number + i);
   }
  }
  
  public class SimpleConstructor {
   public static void main(String[] args) {
    for(int i = ; i < ; i++)
     new Rock(i);
   }
  }
  
  利用構建器的自變量我們可為一個對象的初始化設定相應的參數舉個例子來說假設類Tree有一個構建器它用一個整數自變量標記樹的高度那麼就可以象下面這樣創建一個Tree對象
  
  tree t = new Tree(); // 英尺高的樹
  
  若Tree(int)是我們唯一的構建器那麼編譯器不會允許我們以其他任何方式創建一個Tree對象
  構建器有助於消除大量涉及類的問題並使代碼更易閱讀例如在前述的代碼段中我們並未看到對initialize()方法的明確調用——那些方法在概念上獨立於定義內容在Java中定義和初始化屬於統一的概念——兩者缺一不可
  構建器屬於一種較特殊的方法類型因為它沒有返回值這與void返回值存在著明顯的區別對於void返回值盡管方法本身不會自動返回什麼但仍然可以讓它返回另一些東西構建器則不同它不僅什麼也不會自動返回而且根本不能有任何選擇若存在一個返回值而且假設我們可以自行選擇返回內容那麼編譯器多少要知道如何對那個返回值作什麼樣的處理

From:http://tw.wingwit.com/Article/program/Java/Javascript/201311/25417.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.