(一)创建并使用自定义包
1.自定义包的声明方式
<package> <自定义包名>
声明包语句必须添加在源程序的第一行,表示该程序文件声明的全部类都属于这个包。
2.创建自定义包 Mypackage
在存放源程序的文件夹中建立一个子文件夹 Mypackage。例如,在“D:\java\javacode”文件夹之中创建一个与包同名的子文件夹 Mypackage(D:\java\javacode\Mypackage),并将编译过的 class 文件放入到该文件夹中。 注意:包名与文件夹名大小写要一致。
3.在包中创建类
1) 编写程序KY6_1.java,在源程序中,首先声明使用的包名 Mypackage,然后创建KY6_1类,该类具有计算今年的年份,可以输出一个带有年月日的字符串的功能。
2) 源代码如下。
package Mypackage; //声明存放类的包
import java.util.*; //引用 java.util 包
public class KY6_1 {
private int year,month,day;
public static void main(String[] args){}
public KY6_1 (int y,int m,int d) {
year = y;
month = (((m>=1) & (m<=12)) ? m : 1);
day = (((d>=1) & (d<=31)) ? d : 1);
}
public static int thisyear() {
return Calendar.getInstance().get(Calendar.YEAR);//返回当年的年份
}
public int year() {
return year;//返回年份
}
public String toString(){
return year+"-"+month+"-"+day;//返回转化为字符串的年-月-日
}
}
3) 编译KY6_1.java 文件,然后将KY6_1.class 文件存放到 Mypackage 文件夹中(D:\java\javacode\Mypackage)。注意:先不运行程序KY6_1.class!
4.编写一个需要使用到包 Mypackage 中的KY6_1 类的程序KY6_2.java。
1) 编写 KY6_2.java 程序:给定某人姓名与出生日期,计算该人年龄,并输出该人姓名,年龄,出生日期。程序使用了KY6_1 的方法来计算年龄。
2) 源代码如下。
package Mypackage;
import Mypackage.KY6_1; //引用 Mypackage 包中的KY6_1 类
public class KY6_2 {
private String name;
private KY6_1 birth;
public static void main(String args[])
{
KY6_2 a = new KY6_2("张驰",1990,1,11);
a.output();
}
public KY6_2 (String n1, int y, int m, int d)
{ //初始化变量与对象
name = n1;
birth = new KY6_1(y, m, d);
}
public int age() //计算年龄
{
return KY6_1.thisyear() - birth.year(); //返回当前年与出生年的差即年龄
}
public void output()
{
System.out.println("姓名 : "+name);
System.out.println("出生日期: "+birth.toString());
System.out.println("今年年龄 : "+age());
}
}
3) 编译KY6_2.java 程序并运行程序KY6_2.java
4) 在实验报告中写出该程序的运行结果。
姓名 : 张驰
出生日期: 1990-1-11
今年年龄 : -28
5) 程序运行的结果有没有问题?问题出在哪里?请在实验报告中指出。
答:输出结果今年年龄不能为负数,返回值应该是return KY6_1.thisyear() - birth.year();