这种java类的构造方法究竟是什么意思?这么写的目的到底是什么?

新手上路,请多包涵

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又作为了参数目的是什么?

阅读 1.7k
2 个回答
  1. 构造方法public BirthDate(BirthDate date)主要作用是将BirthDate的子类实例转化为BirthDate实例或者实现类似克隆的效果。
  2. new BirthDate(this)作用是保证子类调用方法时得到的也是BirthDate实例而不是子类实例,也可能仅仅是想获取一个新BirthDate实例。

1 构造方法public BirthDate(BirthDate date)主要作用是复制一个属性和 date 一样的 BirthDate 实例出来。

2 new BirthDate(this) 其实就是复制一个跟当前对象属性一样的 BirthDate 出来

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题