【教学目的和要求】
1、掌握类的定义和使用
2、掌握类的定义和对象的声明
3、掌握构造函数的执行过程
4、掌握具有不同访问属性的成员的访问方式
【教学组织】
1、定义一个TDate类,包含年(year)、月(month)、日(day)等属性,有三个公有成员函数:SetDate来设置日期、AddOneDay来对日期进行加1天的操作、print来输出日期;
2、对构造函数或成员函数进行重载;
3、设置构造函数或成员函数的缺省参数
4、观察构造函数的调用顺序;
5、观察具有不同访问属性的成员的访问方式。
public class TDate {
//缺省构造方法
public TDate() {
year = 2003;
month = 1;
day = 1;
System.out.println("调用缺省的构造方法");
}
//带有参数的构造方法
public TDate(int y, int m, int d) {
year = y;
month = m;
day = d;
System.out.println("调用带参数的构造方法");
}
//设置日期的方法
public void setDate(int y, int m, int d) {
year = y;
month = m;
day = d;
}
//计算某年某月最大天数的方法(私有)
private int maxDays(int y, int m) {
int days;
switch (m) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31; //31天
break;
case 2:
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)//闰年29天
{
days = 29;
} else {
days = 28;
}
break;
//}
default://30天
days = 30;
break;
}
return days;
}
//增减天数的方法
public void addOneDay() {
day = day + 1;
if (day > maxDays(year, month)) {
month = month + 1;
day = 1;
}
if (month > 12) {
year = year + 1;
month = 1;
}
}
//打印日期的方法
public void print() {
System.out.println(year + "年" + month + "月" + day + "日");
}
private int year;
private int month;
private int day;
public static void main(String[] args) {
TDate d1 = new TDate();
System.out.print("不带参数的日期对象:");
d1.print();
TDate d2 = new TDate(2004, 10, 14);
d2.addOneDay();
System.out.println("带3个参数的日期对象加一天后:");
d2.print();
d2.setDate(2005, 4, 8);
System.out.println("重新设定日期后:");
d2.print();
}
}