我想在创建单个对象时执行多个构造函数。例如,我有一个像这样的类定义 -
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
由于
答案 0 :(得分:13)
在构造函数中使用this()
而不是Prg()
答案 1 :(得分:5)
使用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");
}
答案 2 :(得分:3)
您应该使用this
声明。
e.g。
public Prg(int b, int c)
{
this(b);
System.out.println("In multiple parameter constructor");
}
答案 3 :(得分:3)
使用this
keyword.Full运行代码如下
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);
}
}
答案 4 :(得分:2)
调用其他构造函数时使用this()
代替Prg()