当前位置: 代码迷 >> Java相关 >> 一个构造方法的问题
  详细解决方案

一个构造方法的问题

热度:331   发布时间:2013-10-15 14:58:00.0
一个构造方法的问题
在下面的代码中第二个构造方法什么意思?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();


    }
}

----------------解决方案--------------------------------------------------------
这是你的代码吗?
构造方法这一般是其他的类调用的时候用到它来实例化。如果是继承关系的话,就要注意方法的执行顺序问题。本类中同样也是,你要注意 静态方法,常量,变量,普通方法等的执行顺序。你这个里面有值。相当于初始化了。然后看看执行顺序,这个程序想表达什么,或是考什么?
----------------解决方案--------------------------------------------------------
回复 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方法赋值呢
----------------解决方案--------------------------------------------------------
  相关解决方案