12

我想在创建单个对象时执行多个构造函数。例如,我有一个像这样的类定义-

public class Prg
{
    public Prg()
    {
        System.out.println("In default constructor");
    }
    public Prg(int a)
    {
        System.out.println("In single parameter constructor");
    }
    public Prg(int b, int c)
    {
        System.out.println("In multiple parameter constructor");
    }
}

我正在尝试通过以下代码来实现它 -

public class Prg
{
    public Prg()
    {
        System.out.println("In default constructor");
    }
    public Prg(int a)
    {
        Prg();
        System.out.println("In single parameter constructor");
    }
    public Prg(int b, int c)
    {
        Prg(b);
        System.out.println("In multiple parameter constructor");
    }
    public static void main(String s[])
    {
        Prg obj = new Prg(10, 20);
    }
}

但在这种情况下,它会产生错误,例如 -

Prg.java:11: error: cannot find symbol
            Prg();
            ^
  symbol:   method Prg()
  location: class Prg
Prg.java:16: error: cannot find symbol
            Prg(b);
            ^
  symbol:   method Prg(int)
  location: class Prg
2 errors

谢谢

4

5 回答 5

14

在你的构造函数中使用this()而不是Prg()

于 2013-09-25T08:16:30.280 回答
6

使用this代替Prg

    public Prg()
    {
        System.out.println("In default constructor");
    }
    public Prg(int a)
    {
        this();
        System.out.println("In single parameter constructor");
    }
    public Prg(int b, int c)
    {
        this(b);
        System.out.println("In multiple parameter constructor");
    }
于 2013-09-25T08:17:43.620 回答
4

使用this关键字。完整运行代码如下

public class Prg
{
    public Prg()
    {
        System.out.println("In default constructor");
    }
    public Prg(int a)
    {
        this();
        System.out.println("In single parameter constructor");
    }
    public Prg(int b, int c)
    {
        //Prg obj = new Prg(10, 20);

this(b);        System.out.println("In multiple parameter constructor");
    }
    public static void main(String s[])
    {
        Prg obj = new Prg(10, 20);
    }
}
于 2013-09-25T08:19:24.853 回答
3

你应该使用this声明。

例如

public Prg(int b, int c)
{
    this(b);
    System.out.println("In multiple parameter constructor");
}
于 2013-09-25T08:17:40.613 回答
2

调用其他构造函数时使用this()代替Prg()

于 2013-09-25T08:17:28.080 回答