"this()"在构造函数中做了什么?

use*_*340 6 java constructor

我有两个关于以下代码的问题.1.如何在不使用setter的情况下构造第三个构造函数?2. this()在最后一个构造函数中做了什么.

public class Person {

    private String name;
    private String address;

    Person(){}
    Person(String name){
        this.name = name;
    }
    Person(String address){
        //Person(java.lang.String) is already defined.
    }

    Person(String name,String address){
        this();
        this.name = name;
        this.address = address;
    }
}

我的问题解决方案是Person(对象地址){this.address =(String)address; 但是,我不确定这一点.

我认为这(); 在最后一个构造函数中调用构造函数Person(){},但如果确实如此,是否意味着当我调用时会创建两个Person对象

Person p = new Person("myName","myAddress");

谢谢!!!

And*_*ite 10

这个问题Person(String name)Person(String address)是,你不能有两个构造函数使用相同的参数.当你想调用这样的东西时,编译器不会知道要调用哪一个: new Person("Joe Blow");

你可以这样做:

Person(String name)
{
    this.name = name;
}
Person(String name, String address)
{
    this(name);
    this.address = address;
}
Run Code Online (Sandbox Code Playgroud)

this()最后一个构造函数中的" "只是告诉构造函数在构造对象的过程中调用默认构造函数.它不会创建两个对象,它只是在def中运行代码.构造函数,在您的情况下,什么都不做.