国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

在構建器里調用構建器

2019-11-18 12:10:04
字體:
來源:轉載
供稿:網友

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 邯郸市| 青阳县| 丰顺县| 南召县| 永寿县| 虞城县| 温宿县| 广德县| 久治县| 曲周县| 陵川县| 达尔| 长武县| 邵阳市| 双牌县| 怀柔区| 东乡县| 宁都县| 武陟县| 大石桥市| 奈曼旗| 绥阳县| 东宁县| 黄冈市| 武威市| 七台河市| 博罗县| 都昌县| 宜章县| 横峰县| 招远市| 庆阳市| 大方县| 田林县| 恩平市| 娄烦县| 夹江县| 正宁县| 邛崃市| 古丈县| 桐城市|