我是新手,有人可以帮助我了解构造函数链接有用的场景类型以及程序中“this()”的用途是什么?这是代码。
public class Constructor_chaining {
Constructor_chaining(){
System.out.println("Default constructor...");
}
Constructor_chaining(int i){
this();
System.out.println("Single parameterized constructor...");
}
Constructor_chaining(int i,int j){
this(j);
System.out.println("Double parameterized constructr...");
}
public static void main(String args[]){
Constructor_chaining obj=new Constructor_chaining(10,20);
}}
答案 0 :(得分:4)
它可以用来避免代码重复。我们举一个例子:
public class Test
{
int a;
int b;
public Test(int a)
{
this.a = a;
}
public Test(int a, int b)
{
this(a);
this.b = b;
}
public static void main(String args[])
{
Test t1 = new Test(1);
Test t2 = new Test(1,2);
System.out.println(t1.a + " " + t1.b);
System.out.println(t2.a + " " + t2.b);
}
}
此处two-parameter constructor
调用one-parameter constructor
来初始化字段a
,因此您无需重复one-parameter constructor
内two-parameter constructor
内的所有代码}}。当然,有了这个小例子,它看起来似乎没用,但想象你有很多想要初始化的字段。这将非常有用。
关于this()
问题:根据Java Docs:
在实例方法或构造函数中,
this
是对当前对象的引用...在构造函数中,您还可以使用
this
关键字来调用同一个类中的另一个构造函数。这样做称为显式构造函数调用。
所以this()
用于调用类Constructor_chaining
的构造函数(在本例中不带参数)。
答案 1 :(得分:2)
它的目的是减少代码重复。如果没有构造函数链接,您通常不得不重复另一个构造函数中的任何内容。
典型情况是默认参数的实现,其中一个构造函数A调用另一个B并为一个或多个参数提供固定值,同时传递其他参数。