北 京 林 业 大 学
2013 学年— 2014 学年第 2学期 Java程序设计基础实验
报告书
专 业: 电子 班 级: 电子 姓 名: 学 号:
实验地点: 任课教师: 黄儒乐
实验题目:类的继承、抽象类、上转型对象 、接口
实验环境: Windows2000/XP;局域网 实验要求:
1. 对所有实验内容中涉及到的命令均要亲自实践,对照实验指导书进行。 2. 把实验中出现的问题以及最后解决的情况反馈到实验报告中。 3. 程序作业的源代码要求反馈到实验报告中。
实验内容:
1. 使用抽象类实现如下程序:
按模板要求,将【代码1】~【代码6】替换为Java程序代码。
HardWork.java
abstract class Employee {
public abstract double earnings( ); }
class YearWorker extends Employee {
【代码1】 // 重写earnings( )方法,返回年薪值 }
class MonthWorker extends Employee {
【代码2】 // 重写earnings( )方法,返回月薪值 }
class WeekWorker extends Employee
{
【代码3】 // 重写earnings( )方法,返回周薪值 }
class Company {
Employee[ ] employee; double salaries=0;
Company(Employee[ ] employee) {
this.employee=employee; }
public double salariesPay( ) {
salaries=0;
【代码4】 // 计算公司年工资总额salaries return salaries; } }
public class HardWork {
public static void main(String args[ ]) {
【代码5】创建Employee[ ] employee对象,数组的初始化长度通过args[]参数来传递 for(int i=0;i 【代码6】当i能被3整除时,初始化一个WeekWorker对象存放到employee[i]位置。 当i除以3余1时,初始化一个MonthWorker对象存放到employee[i]位置。 当i除以3余2时,初始化一个YearWorker对象存放到employee[i]位置。 } Company company=new Company(employee); System.out.println(\公司年工资总额:\ } } 2. 将抽象类改为接口,改造上述程序: 要求:新的程序命名为HardWork2.java,package 设置为demo 一 、抽象类 1.源代码 abstract class Employee { public abstract double earnings(); } class YearWorker extends Employee{ public double earnings(){ double salary=81; return salary; } } class MonthWorker extends Employee{ public double earnings(){ double ms=6; return ms*12; } } class WeekWorker extends Employee{ public double earnings(){ double ws=1; return ws*4*12; } } class Company{ Employee[] employee; double salaries=0; Company(Employee[] employee) { this.employee=employee; } public double salariesPay() { salaries=0; for(int i=0;i return salaries; } } public class HardWork{ public static void main(String args[]){ Employee[] employee=new Employee[9]; for(int i=0;i employee[i]=new WeekWorker(); else if(i%3==1) employee[i]=new MonthWorker(); else if(i%3==2) employee[i]=new YearWorker(); } Company company=new Company(employee); System.out.println(\公司年工资总额:\+company.salariesPay()); } } 2.运行结果 二 、接口类 1.源代码 package demo; abstract interface Employee { public abstract double earnings(); } class YearWorker implements Employee{ public double earnings(){ double salary=101; return salary; } } class MonthWorker implements Employee{ public double earnings(){ double ms=6; return ms*12; } } class WeekWorker implements Employee{ public double earnings(){ double ws=1; return ws*4*12; } } class Company{ Employee[] employee; double salaries=0; Company(Employee[] employee) { this.employee=employee; } public double salariesPay() { salaries=0; for(int i=0;i return salaries; } } public class HardWork2{ public static void main(String args[]){ Employee[] employee=new Employee[21]; } for(int i=0;i Company company=new Company(employee); System.out.println(\公司年工资总额:\+company.salariesPay()); } 2.运行结果 三、 出现的问题 四、 结论分析