两个构造函数

时间:2013-12-31 23:32:30

标签: java constructor

我记得我可以在第二个构造函数中使用第一个构造函数,但是在粗线上有错误,你能帮我纠正吗?

  public FaceExtAdditionCanvas() {
    profileImage.setSize(IMAGE_WIDTH, IMAGE_HEIGHT);
    add(profileImage, getWidth() / 2.0 - IMAGE_WIDTH / 2.0, IMAGE_MARGIN);
  }

  public FaceExtAdditionCanvas(GImage image){
    profileImage=image;
    **this.FaceExtAdditionCanvas();**
  }

3 个答案:

答案 0 :(得分:4)

要从另一个构建函数中调用一个构造函数,您需要使用this(),并且需要先将它放在第一位。在您的情况下,默认构造函数需要调用带参数的构造函数,而不是其他方式。

答案 1 :(得分:0)

我们就是这样的例子:

public class Test
{
    public Test() {
        System.out.println("NO ARGS");
    }

    public Test(String s) {
        this();
        System.out.println("1 ARG");
    }

    public static void main(String args[])
    {
        Test t = new Test("s");
    }
}

会打印

>>> NO ARGS
>>> 1 ARG

调用构造函数的正确方法是:

this();

答案 2 :(得分:0)

构造函数的第一行始终是对另一个构造函数的调用。您可以选择使用“this(...)”从同一个类调用构造函数,或者使用“super(...)”从父类调用构造函数。如果您不包含任何一个,编译器将为您包含以下行:super();