一个构造方法的问题
在下面的代码中第二个构造方法什么意思?Date(Date d)这句程序代码:
import static java.lang.System.*;
public class Date {
private int day,month,year;
Date(int i,int j,int k){
day=i;month=j;year=k;
}
Date(){
day=28;month=2;year=2000;
}
Date(Date d){
day=d.day;month=d.month;year=d.year;
}
public void printdate(){out.println(day+"/"+month+"/"+year);}
public Date tomorrow(){
Date d=new Date(this);
d.day++;
if(d.day>d.daysInMonth()){
d.day=1;
d.month++;
if(d.month>12){
d.month=1;
d.year++;
}
}return d;
}
public int daysInMonth(){
switch(month){
case 1:case 3:case 5:case 7:case 8:case 10:case 12:return 31;
case 4:case 6:case 9:case 11:return 30;
default:if(year%100!=0&&year%4==0){
return 29;
}
else return 28;
}
}
public static void main(String[] args) {
Date d1=new Date();
out.print("the current date is(dd/mm/yy):");
d1.printdate();
out.println();
out.print("its tomorrow is (dd/mm/yy):");
d1.tomorrow().printdate();
out.println();
Date d2=new Date(28,2,1964);
out.print("the current date is (dd/mm/yy):");
d2.printdate();
out.println();
out.print("its tomorrow is (dd/mm/yy):");
d2.tomorrow().printdate();
out.println();
}
}
public class Date {
private int day,month,year;
Date(int i,int j,int k){
day=i;month=j;year=k;
}
Date(){
day=28;month=2;year=2000;
}
Date(Date d){
day=d.day;month=d.month;year=d.year;
}
public void printdate(){out.println(day+"/"+month+"/"+year);}
public Date tomorrow(){
Date d=new Date(this);
d.day++;
if(d.day>d.daysInMonth()){
d.day=1;
d.month++;
if(d.month>12){
d.month=1;
d.year++;
}
}return d;
}
public int daysInMonth(){
switch(month){
case 1:case 3:case 5:case 7:case 8:case 10:case 12:return 31;
case 4:case 6:case 9:case 11:return 30;
default:if(year%100!=0&&year%4==0){
return 29;
}
else return 28;
}
}
public static void main(String[] args) {
Date d1=new Date();
out.print("the current date is(dd/mm/yy):");
d1.printdate();
out.println();
out.print("its tomorrow is (dd/mm/yy):");
d1.tomorrow().printdate();
out.println();
Date d2=new Date(28,2,1964);
out.print("the current date is (dd/mm/yy):");
d2.printdate();
out.println();
out.print("its tomorrow is (dd/mm/yy):");
d2.tomorrow().printdate();
out.println();
}
}
----------------解决方案--------------------------------------------------------
这是你的代码吗?
构造方法这一般是其他的类调用的时候用到它来实例化。如果是继承关系的话,就要注意方法的执行顺序问题。本类中同样也是,你要注意 静态方法,常量,变量,普通方法等的执行顺序。你这个里面有值。相当于初始化了。然后看看执行顺序,这个程序想表达什么,或是考什么?
----------------解决方案--------------------------------------------------------
回复 2楼 java小蚂蚁
我的意思是说,里面的Date(Date d){}方法什么意思,刚才弄懂了是调用对象的方法 ----------------解决方案--------------------------------------------------------
回复 3楼 赵疯子
话说你是理解了,还是不理解啊?你这回复看晕我了 ----------------解决方案--------------------------------------------------------
重载了Date方法 参数是 Date 就是这个对象自己
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
Date(Date d){
day=d.day;month=d.month;year=d.year;
}
已经有一个Date对象,然后将这个对象的day、month、year参数值赋予一个新的Date对象
你可以看成将传的对象看成是另外一个日期对象,只是说OldDate和Date的内容完全相同
Date(OldDate d){
day=d.day;month=d.month;year=d.year;
}
----------------解决方案--------------------------------------------------------
回复 7楼 ghjsmzy
对,就这意思 ----------------解决方案--------------------------------------------------------
那能不能直接用this方法赋值呢
----------------解决方案--------------------------------------------------------