第五章 Java类的继承、包及接口
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5章类的继承、包及接口
在前一章的实验中已经了解了类的基本构成、对象的创建及重载方法的应用等。本章实验的任务主要是了解Java中类的继承、类包、内部类、匿名类及接口的基本构成及应用。
5.1 实验一:类的继承
1. 实验目的
1)正确理解Java中类继承基本概念及思想;
2)基本掌握继承类和被继承类(子类和父类)之间的关系,正确地创建继承类。
2. 实验要求
正确地划分类,根据类之间的关系,确定父类和子类,掌握覆盖方法的应用,完成类程序的编写与调试。
3. 实验内容
在上一章的实验中,建立了公司职员信息类,现在需要处理职员的工资信息,建立职员工资类。
实验示例5.1.1 创建职员工资类Payroll类。
实现该示例的方法步骤如下:
⑴首先分析一下该类的构成
工资信息应包括职工的基本信息,因此可以把Employers类作为Payroll类的父类,Payroll类继承了父类所有的成员变量和方法,因此在Payroll类中需要定义的内容是:
①成员变量
对于工资信息项应该包括basicWage(基本工资)、positionWage(职位工资)、extraWage(附加工资)、other(其他补贴)等等。它们均可声明为int (整数类型)。
②成员方法
常常需要显示或获得全部或某些项工资的信息,因此需要定义如下一些方法:
display() 显示工资的全部信息;
display(int value) 显示一项工资额;
display(int value1, int value2) 显示两项工资额。
③构造方法
如前所述,一个类能够有多个构造对象方法,视需要而定。对Payroll类来说可以给出两个构造方法:
Payroll () 构造无名对象;
Payroll(String ID,String name,String sex,String birthday,String home,String address, String number,int basicWage,int positionWage,int extraWage,int other) 构造一般对象。
⑵根据上边分析和描述,按照类的构成,给出如下类程序代码:
public class Payroll extends Employers
{
int basicWage; //定义基本工资
int positionWage; //定义职位工资
int extraWage; //定义附加工资
int other; //定义其他项
public void display() //显示信息方法
{
super.display(); //引用父类的display()方法
System.out.println("基本工资:"+basicWage);
System.out.println("职位工资:"+positionWage);
System.out.println("附加工资:"+extraWage);
System.out.println("其他项:"+other);
System.out.println("工资总额:"+(basicWage+positionWage+extraWage+ other));
} //显示所有信息方法结束
public void display(int value1) //显示一项工资额
{
System.out.println("工号:"+this.number+" 该项工资额:"+value1);
} //显示一项工资额方法结束
public void display(int value1,int value2) //显示两项工资额
{
System.out.println("工号:"+this.number+" 两项工资额分别是:"+value1+"、"+value2);
} //显示两项工资额方法结束
public Payroll() //构造方法
{
super();//引用父类的构造方法
basicWage=0;
positionWage=0;
extraWage=0;
other=0;
} //无参构造方法结束
public Payroll(String number,String name,String sex,String birthday,String home,String address,String ID,int basicWage,int positionWage,int extraWage,int other)//构造方法
{
super(number,name,sex,birthday,home,address,ID);//引用父类的构造方法
this.basicWage=basicWage;
this.positionWage=positionWage;
this.extraWage=extraWage;
this.birthday=birthday;
this.other=other;
} //有参构造方法结束
}
⑶在完成了公用类(public)Payroll源程序文件Payroll.java的建立之后,编译它生成类文件(.class字节码文件),以便在应用程序中使用它。
⑷程序分析
该类是Employers类的子类,在程序中,覆盖(重写)了父类中的一些方法(如display()等),并使用super关键词引用父类方法。要注意在使用super引用父类成员方法和构造方法的区别。
在完成上边的实验之后,请认真阅读、理解程序,仿照上边的程序,完成下边的自由练习。
自由练习5.1以上一章自由练习中建立的学生信息类Students为父类,建立一个学生学期的成绩单类Results,可以包含7~10项成绩,并包含可显示若干项成绩的方法。
实验示例5.1.2 测试Payroll类,编写测试程序TestPayroll.java,创建Payroll对象,显示职员对象工资的相关信息。
完成该示例的方法步骤如下:
⑴这是一个测试Payroll类的程序,在测试程序中,我们需要创建Payroll类的对象,然后分别执行对象的各个方法,以测试类的功能。
⑵根据示例题目的要求,可给出如下的程序代码:
public class TestPayroll
{
public static void main(String [] args)
{
/* 首先创建一个无名和有名对象,测试两个构造方法*/
Payroll e1=new Payroll();
Payroll e2=new Payroll("0110","孙仁","男", "1988.10.15","重庆","航海路21号","422401************",600,500,400,200);
/*测试对象的成员方法*/
System.out.println("-------无名对象----------");
e1.display();
System.out.println("-------有名对象----------");
e2.display();
="力士靓"; //修改无名对象的名字
e1.sex="女"; //修改无名对象的性别
e1.birthday="1989.12.30"; //修改无名对象的生日
e1.number="0111"; //修改无名对象的职员号
e1.basicWage=500; //修改无名对象的基本工资
System.out.println("--------"++"的基本工资-------");
e1.display(e1.basicWage);
System.out.println("--------"++"的基本工资、职位工资-------");
e2.display(e2.basicWage,e2.positionWage);
}
}
⑶编译并运行程序,程序执行结果如错误!未找到引用源。所示。