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);
//构造方法用this 作为参数调用
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(3,5,1988);
printDate(date0);
date0 = date0.addDays(7);
printDate(date0);
date0 = addDays2(date0,4);
printDate(date0);
}
}
第一,构造方法public BirthDate(BirthDate date)这种调用自身类类型作为参数究竟是什么意思?目的何在?
第二,BirthDate date1 = new BirthDate(this); 这里的this又作为了参数目的是什么?
public BirthDate(BirthDate date)
主要作用是将BirthDate
的子类实例转化为BirthDate
实例或者实现类似克隆的效果。new BirthDate(this)
作用是保证子类调用方法时得到的也是BirthDate
实例而不是子类实例,也可能仅仅是想获取一个新BirthDate
实例。