簡體   English   中英

用Java將構造函數鏈接在一起

[英]Chaining together constructors in java

我正在嘗試創建一個程序,該程序將根據輸入的尺寸量告訴您是否無能為力,線條,矩形或盒子。 我們不允許使用this。“ variable”,而必須使用this。(“ parameters”)來鏈接構造函數。 我面臨的唯一問題是,除一個構造函數外,所有構造函數都在它們都鏈接到的一個構造函數中打印行。 這是令人困惑的代碼:

//Conner Cozine
public class OverloadedBox {

  //instance variables

  //default constructor
  public OverloadedBox(){
    this(0, 0, 0);
    System.out.println("Nothing is created");
  }
  //one parameter constructor
  public OverloadedBox(int l){
    this(l, 0, 0);
    System.out.println("A line is created");
  }
  //two parameter constructor
  public OverloadedBox(int l, int w){
    this(l, w, 0);
    System.out.println("A rectangle is created");
  }
  //three parameter constructor
  public OverloadedBox(int l, int w, int h){
    System.out.println("A box is made");

  }
}

和測試類:

public class OverloadedBoxTest {
  public static void main(String[] args){
    //OverloadedBox b = new OverloadedBox(); //nothing
    //OverloadedBox b1 = new OverloadedBox(1, 3); //rectangle
    //OverloadedBox b2 = new OverloadedBox(1, 3, 4); //box
    //OverloadedBox b3 = new OverloadedBox(2); //line
  }

}

用當前定義構造函數的方式,我認為您無法實現所需的功能。 這是因為前三個全都調用了第四個,因此始終打印第四個的輸出。

您可以添加第五個私有構造函數以實現所需的功能:

public class OverloadedBox {
    //instance variables

    public OverloadedBox() {
        this(0, 0, 0, "nothing");
    }
    public OverloadedBox(int l) {
        this(l, 0, 0, "a line");
    }
    public OverloadedBox(int l, int w) {
        this(l, w, 0, "a rectangle");
    }
    public OverloadedBox(int l, int w, int h) {
        this(l, w, h, "a box");
    }
    private OverloadedBox(int l, int w, int h, String type) {
        System.out.println("Created " + type);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM