//DateDemo类的代码如下:publicclassDateDemo{privateStringyear;privateStringmonth;privateStringday;publicDateDemo(){year="2013";month="4";day="1";}publicDateDemo(DateDemoda...
//DateDemo类的代码如下:
public class DateDemo {
private String year;
private String month;
private String day;
public DateDemo()
{
year="2013";
month="4";
day="1";
}
public DateDemo(DateDemo date)
{
year=date.year;
day=date.day;
month=date.month;
}
public DateDemo(String year,String month,String day)
{
this.year=year;
this.month=month;
this.day=day;
}
public String getYear()
{
return year;
}
public String getMonth()
{
return month;
}
public String getDay()
{
return day;
}
public void setYear(String year)
{
this.year=year;
}
public void setMonth(String month)
{
this.month=month;
}
public void setDay(String day)
{
this.day=day;
}
}
TravelDate代码如下:
public class TravelDate implements Cloneable {
private DateDemo startDate;
private DateDemo stopDate;
private int money;
public TravelDate(TravelDate travelDate)
{
startDate=travelDate.startDate;
stopDate=travelDate.stopDate;
money=travelDate.money;
}
public TravelDate(DateDemo startDate,DateDemo stopDate,int money)
{
this.startDate=startDate;
this.stopDate=stopDate;
this.money=money;
}
public DateDemo getStartDate()
{
return startDate;
}
public void setStartDate(DateDemo startDate)
{
this.startDate=startDate;
}
public void setStopDate(DateDemo stopDate)
{
this.stopDate=stopDate;
}
public void setMoney(int money)
{
this.money=money;
}
public void ShowTravelImformation()
{
System.out.println("start time :"+startDate.getYear()+"-"+startDate.getMonth()+"-"+startDate.getDay());
System.out.println("stop time :"+stopDate.getYear()+"-"+stopDate.getMonth()+"-"+stopDate.getDay());
System.out.println("travel money :"+money);
}
public static void main(String[]args)
{
DateDemo startDate=new DateDemo("2013","4","1");
DateDemo stopDate=new DateDemo("2013","4","3");
DateDemo extra=new DateDemo("0","0","0");
TravelDate t1=new TravelDate(startDate,stopDate,100);
TravelDate t2=new TravelDate(t1);
t1.ShowTravelImformation();
t2.setStartDate(extra);
t1.ShowTravelImformation();
}
}
代码运行结果是:
start time :2013-4-1
stop time :2013-4-3
travel money :100
start time :2013-4-1
stop time :2013-4-3
travel money :100
疑问:为什么t1没有发生改变?t2是t1的浅拷贝,为什么t2改变了t1没改变?不合乎浅拷贝的常理啊?
求助java大神帮帮忙解答一下。谢过!!!!
展开