【问题标题】:Constructor already in class [closed]构造函数已经在课堂上[关闭]
【发布时间】:2021-05-29 21:27:35
【问题描述】:
    private Square wall;
public House()
{
    wall = new Square();
    wall.makeVisible();
    wall.changeSize(80);
    wall.moveHorizontal(40);
    wall.moveVertical(170);
}

private Triangle roof;
public House()
{
    roof = new Triangle();
    roof.makeVisible();
    roof.changeSize(50, 120);
    roof.moveHorizontal(90);
    roof.moveVertical(155);
    roof.changeColor("Black");
}

编辑:修复了它,但是当我尝试添加这个时,我再次收到错误。

private Square window;
public House(Square window)
{
window = new Square();
}

我明白我为什么会得到这个,因为我已经有 2 个具有相同签名的相同构造函数。无论如何我可以将它们合并在一起吗?

【问题讨论】:

标签: java constructor


【解决方案1】:

也许考虑构造函数重载 .重载是一种技术,在这种技术中,一个类可以有任意数量的构造函数,这些构造函数的参数列表不同,您的代码无法正常工作的原因是因为您有 2 个具有相同参数的构造函数。

private Square wall;
public House(Square wall)
{
    this.wall = new Square();
    this.wall.makeVisible();
    this.wall.changeSize(80);
    this.wall.moveHorizontal(40);
    this.wall.moveVertical(170);
}

private Triangle roof;
public House(Triangle roof)
{
    this.roof = new Triangle();
    this.roof.makeVisible();
    this.roof.changeSize(50, 120);
    this.roof.moveHorizontal(90);
    this.roof.moveVertical(155);
    this.roof.changeColor("Black");
}

【讨论】:

  • 没问题@JavaLearner 如果它解决了您的问题,请不要忘记将答案标记为正确的答案:)
  • 另一个问题,如果我想在使用 square 的同时在课堂上添加另一个构造函数,我该怎么做
  • 检查最近的编辑
  • 只需添加一个具有所有这些属性的构造函数作为参数 public House(Tringe roof, Square wall, Square window) { 然后在这里初始化它们
【解决方案2】:

是的! 你可以这样做:

public House()
{
    wall = new Square();
    wall.makeVisible();
    wall.changeSize(80);
    wall.moveHorizontal(40);
    wall.moveVertical(170);
    roof = new Triangle();
    roof.makeVisible();
    roof.changeSize(50, 120);
    roof.moveHorizontal(90);
    roof.moveVertical(155);
    roof.changeColor("Black");
}

【讨论】:

  • 谢谢! @user14502245
  • 当然! @JavaLearner 如果对您有帮助,请将答案标记为正确答案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-24
  • 1970-01-01
  • 2021-08-21
  • 1970-01-01
  • 2013-08-26
  • 1970-01-01
相关资源
最近更新 更多