链接构造函数的目的是什么?

时间:2014-01-15 06:45:07

标签: java

我是新手,有人可以帮助我了解构造函数链接有用的场景类型以及程序中“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);
}}

2 个答案:

答案 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 constructortwo-parameter constructor内的所有代码}}。当然,有了这个小例子,它看起来似乎没用,但想象你有很多想要初始化的字段。这将非常有用。

关于this()问题:根据Java Docs

  

在实例方法或构造函数中, this 是对当前对象的引用...

     

在构造函数中,您还可以使用 this 关键字来调用同一个类中的另一个构造函数。这样做称为显式构造函数调用

所以this()用于调用类Constructor_chaining的构造函数(在本例中不带参数)。

答案 1 :(得分:2)

它的目的是减少代码重复。如果没有构造函数链接,您通常不得不重复另一个构造函数中的任何内容。

典型情况是默认参数的实现,其中一个构造函数A调用另一个B并为一个或多个参数提供固定值,同时传递其他参数。