还剩6页未读,继续阅读
文本内容:
实验报告册2020-2023学年一学期
一、预习内容
1、实验目的和要求.理解java类的继承的概念,掌握如何定义一个类的子类掌握成员变量的隐臧和方法的覆盖掌握this和super关键字的使用.理解final类和abstract类的含义,掌握如何定义和使用final类和abstract类.掌握对象的造型与多态的概念,掌握访问修饰符的含义和使用.掌握接口的概念与定义,能够区别接口与抽象类
2、实验内容和原理
1.设计一个根据雇员类型利用abstract方法和多态性完成工资单计算的程序Employee是抽象类;Employee的子类有Boss(每星期发给他固定工资,而不计工作时间)、CommissionWorker(除基本工资外还根据销售额发放浮动工资)、Pieceworker(按其生产的产品数发放工资)、HourlyWorker(根据工作时间长短发放工资)该例的Employee的每个子类都声明为final因为不需要再继承它们生成子类在父类中声明earnings()为抽象方法,并且对于每个子类都提供恰当的earnings实现方法对所有雇员类型都使用earnings()方法,但每个人挣的工资按他所属的雇员类计算,所有雇员类都是从父类Employee派生出的为了计算雇员的工资,程序仅仅使用雇员对象的一个父类引用并调用earnings方法一个实际的工资系统中,各种Employee对象的引用可以通过一个Employee引用数组来实现程序依次使用数组的每个元素(Employee引用)调用每个对象的employee方法
3、实验所用主要仪器设备(或实验环境)Eclipse软件
4、实验方案设计(思路、步骤和方法等)L设计一个根据雇员类型利用abstract方法和多态性完成工资单计算的程序Employee是抽象类;Employee的子类有Boss(每星期发给他固定工资,而不计工作时间)、CommissionWorker(除基本工资外还根据销售额发放浮动工资)、Pieceworker(按其生产的产品数发放工资)、HourlyWorker(根据工作时间长短发放工资)该例的Employee的每个子类都声明为final因为不需要再继承它们生成子类在父类中声明earnings为抽象方法,并且对于每个子类都提供恰当的earnings实现方法对所有雇员类型都使用earnings()方法,但每个人挣的工资按他所属的雇员类计算,所有雇员类都是从父类Employee派生出的为了计算雇员的工资,程序仅仅使用雇员对象的一个父类引用并调用earnings方法一个实际的工资系统中,各种Employee对象的引用可以通过一个Employee引用数组来实现程序依次使用数组的每个元素(Employee引用)调用每个对象的employee方法
二、实验数据(现象)记录及结果处理实验代码如图所示StestjavaH|packagewubinghao;//抽象雇贝类abstractclassEmployee{//声明防水变量和挣钱方法privatedoublesalary=0;abstractvoidearnings;//Setter,GetterpublicdoublegetSalary{returnsalary;}publicvoidsetsalarydoublesalary{this.salary=salary;}finalclassBossextendsEmployee团JavaH|finalclassBoss«xt«ndsEmployeeprivate±ntDay=0;privatestaticfinaldoubleMONTHLY_PAY-8040;//月薪publicBoss{supex;|//用于初始化一个干了Day天的老板publicBossIntDay{super;this.Day-Day;I30Overridevoidearnings{sczs^l^ryMONTHLY_PAY•Day;Sy3gm.out.printIn板可以4#:♦qetsalary♦元工资.”;
①*test.javaJ
3.finalclassCommissionWorkerextendsEmployee{privateintDay=0;privatedoubleDayPay=
60.4;//每天加薪privatestaticfinaldoubleMONTHLY_PAY=2000;〃正式工的月薪publicCommissionWorker{super;}//用于初始化一个干了Day那正式工publicConroissionWorkerintDay{super;this.Day=Day;}e©Override4voidearnings{setsalaryMONTHL匚PAY+Day*DayPay;0»test.java区[■4voidearningssetsalaryMONTHE匚PAY+Day*DayPay;System.out.printin正式工的工资是+getSalaryO+元人民币;finalclassPieceworkerextendsEmployee{privateintpieces=0;//f牛数privatefinaldoublePIECES_PRICE=
96.4;//件工资publicPieceworker{super;}//初始化一个干了pieces件脓计件工publicPieceworkerintpieces{super;this.pieces=pieces;白*tGst.java£
3.-©Override4voidearnings{setsalarypieces*PIECES_PRICE;System.out.printin这个计件工的工资是+getsalary+元人民币♦;}}H小时工限时间算finalclassHourlyWorkerextendsEmployee{privateinthour=0;//小时privatefinaldoubl*HOUR_PRICE=
78.9;//小时工资publicHourlyWorkersuper{;}publicHourlyWorkerinthour{super0;Z*test.java区.publicHourlyWorkerinthour{super;this.hour=hour;}・@Override4voidearnings{setsalaryhour*HOUR_PRICE;System.out.printin小时工的工资是+getSalaryO+元人民币;}//主类测试类classHellopublicstaticvoidmainString]args{//初始化一个雇员数组|Employeeemployee[]=newEmployee
[4];employee
[0]=newBoss23;l£j•,•java3।।//主类测试类classHello{publicstaticvoidmainString[args{//初始化一个雇员数组Employeeemployee[J=newEmployee
[4];employee
[0]=newBoss23;employee[1J=n«wCommissionWorker33;employee
[2]=n«wPieceworker44;employee
[3]=nwHourlyworker55;//循环调用方法forEmployeeworker:employee{worker.earnings;输出结果如下图所示:1rob邳*JavBx;SCtreoleKtemiinatedHelo[JavaApplication]tVava^fel.S.OJSiybin^aw.exe2022^12^1491^11^:40斗二三:
一、二二二正虹工资是
3993.2元人丽计件工工飕:
4246.沅人艮和岫工工资是433g.5元人民币.
三、实验结果分析与讨论(对实验结果进行具体分析,并对实验中出现的问题或错误原因分析,以及改进的办法与建议通过对Java的了解,我发现它确实有很多方便之处,它集抽象性、封装性、继承性和多态性于一体,实现了代码重用和代码扩充,提高了软件开发的效率对于我们这个专业来说学好Java语言是很重要的,所以在实验的过程中我都尽力理解java编程思想、掌握基本技巧,尽量学到最多的知识教师评阅意见
(1)实验预习(30分)成绩□预习认真、熟练掌握方法与步骤(30〜28)□有预习、但未能掌握方法与步骤(21〜18)
(2)操作过程(40分)成绩口遵规守纪、操作熟练、团结协作(40〜37)29)口遵规守纪、操作基本正确、无协作(28〜24)(17〜0)
(3)结果分析(30分)成绩□结果详实、结论清晰、讨论合理(30〜28)口结果正确、没有分析讨论(21〜18)其它意见年月日。
个人认证
优秀文档
获得点赞 0