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

在構建器裡調用構建器

2013-11-23 19:30:13  來源: Java核心技術 

  
  若為一個類寫了多個構建器那麼經常都需要在一個構建器裡調用另一個構建器以避免寫重復的代碼可用this關鍵字做到這一點
  通常當我們說this的時候都是指這個對象或者當前對象而且它本身會產生當前對象的一個句柄在一個構建器中若為其賦予一個自變量列表那麼this關鍵字會具有不同的含義它會對與那個自變量列表相符的構建器進行明確的調用這樣一來我們就可通過一條直接的途徑來調用其他構建器如下所示
  
  //: Flowerjava
  // Calling constructors with this
  
  public class Flower {
   private int petalCount = ;
   private String s = new String(null);
   Flower(int petals) {
    petalCount = petals;
    Systemoutprintln(
     Constructor w/ int arg only petalCount=
     + petalCount);
   }
   Flower(String ss) {
    Systemoutprintln(
     Constructor w/ String arg only s= + ss);
    s = ss;
   }
   Flower(String s int petals) {
    this(petals);
  //!  this(s); // Cant call two!
    thiss = s; // Another use of this
    Systemoutprintln(String & int args);
   }
   Flower() {
    this(hi );
    Systemoutprintln(
     default constructor (no args));
   }
   void print() {
  //!  this(); // Not inside nonconstructor!
    Systemoutprintln(
     petalCount = + petalCount + s = + s);
   }
   public static void main(String[] args) {
    Flower x = new Flower();
    xprint();
   }
  } ///:~
  
  其中構建器Flower(String sint petals)向我們揭示出這樣一個問題盡管可用this調用一個構建器但不可調用兩個除此以外構建器調用必須是我們做的第一件事情否則會收到編譯程序的報錯信息
  這個例子也向大家展示了this的另一項用途由於自變量s的名字以及成員數據s的名字是相同的所以會出現混淆為解決這個問題可用thiss來引用成員數據經常都會在Java代碼裡看到這種形式的應用本書的大量地方也采用了這種做法
  在print()中我們發現編譯器不讓我們從除了一個構建器之外的其他任何方法內部調用一個構建器
  

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