What exactly does this constructor of the java class mean? What exactly is the purpose of this writing?

package meta;

public class BirthDate {

private int day = 1;

private int month = 1;

private int year = 1900;

public BirthDate (int day, int month,int year) {

this.day = day;

this.month = month;

this.year = year;

}

public BirthDate (BirthDate date) {

this.day = date.day;

this.month = date.month;

this.year = date.year;

}

public BirthDate addDays (int add_days) {

BirthDate date1 = new BirthDate (this);

/ / the constructor calls

with this as a parameter.

date1.day = date1.day + add_days;

return date1;

}

public static BirthDate addDays2 (BirthDate date1,int add_days) {

date1.day = date1.day + add_days;

return date1;

}

public static void printDate (BirthDate date) {

System.out.println (date.year + "" + date.month + "" + date.day);

}

public static void main (String [] args) {

/ / TODO Auto-generated method stub

BirthDate date0 = new BirthDate (3pm 5J 1988);

printDate (date0);

date0 = date0.addDays (7);

printDate (date0);

date0 = addDays2 (date0,4);

printDate (date0);

}

}
first, what exactly does the constructor public BirthDate (BirthDate date) mean by calling its own class type as a parameter? What is the purpose?
second, BirthDate date1 = new BirthDate (this);. What is the purpose of the this here as a parameter?

Jan.21,2022

    The main function of
  1. constructor public BirthDate (BirthDate date) is to convert a subclass instance of BirthDate into an instance of BirthDate or to achieve a clone-like effect.
  2. The function of new BirthDate (this) is to ensure that when a subclass calls a method, it also gets an instance of BirthDate instead of a subclass instance, or it may just want to get a new BirthDate instance.

1 the main function of the constructor public BirthDate (BirthDate date) is to copy a BirthDate instance with the same properties as date.

2 new BirthDate (this) actually copies a BirthDate with the same attributes as the current object

Menu