java实验报告8Word文档格式.docx
《java实验报告8Word文档格式.docx》由会员分享,可在线阅读,更多相关《java实验报告8Word文档格式.docx(10页珍藏版)》请在冰点文库上搜索。
![java实验报告8Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/2/280a2901-2f87-489a-a826-4893dfce4abe/280a2901-2f87-489a-a826-4893dfce4abe1.gif)
周莉
学生姓名
班级学号
学院(系)
计算机软件学院
专业
计算机科学与技术
实验名称
抽象类和抽象方法
周莉
实验类型
上机
实验学时
2
2015-5-7
一、实验目的
1.掌握多态的实现
2.掌握抽象类和抽象方法的定义和使用
二、实验环境(实验设备)
1.每位学生配备计算机一台
2.计算机需安装好JDK和Jcreator
三、实验内容
1.首先编写一个抽象类,要求该抽象类有3个抽象方法:
Publicabstractvoidf(intx);
Publicabstractdoubleg(doublex);
Publicabstractdoubleh(doublex);
然后分别给出这个抽象类的3个子类。
要求:
在应用程序主类中使用这些子类创建对象,再让它们的上转型对象调用方法f()、g()和h()。
(1)源程序:
abstractclassA{
publicabstractvoidf(intx);
publicabstractvoidg(intx,inty);
publicabstractdoubleh(doublex);
}
classA1extendsA{
publicvoidf(intx){
System.out.println(x);
publicvoidg(intx,inty){
intz=x+y;
System.out.println(z);
}
publicdoubleh(doublex){
returnx*x;
classA2extendsA{
System.out.println("
Hello:
"
+x);
intz=x-y;
returnMath.sqrt(x);
classA3extendsA{
你好:
doublez=(double)x/y;
return1/x;
publicclassZuoYe5_2{
publicstaticvoidmain(Stringargs[]){
Aa=newA1();
a.f(10);
a.g(12,20);
System.out.println(a.h(100));
a=newA2();
a=newA3();
(2)实验结果:
2.设计一个人员类(Person),其中包含一个方法pay,代表人员的工资支出。
再从Person类派生出助教类(Assistant)、讲师类(Instructor)、副教授类(AssistantProfessor)和教授类(Professor)。
其中:
工资支出=基本工资+授课时数*每课时兼课金。
但助教基本工资为800,每课时兼课金25,讲师基本工资为1000,每课时兼课金35,
副教授基本工资为1200,每课时兼课金40,教授基本工资为1400,每课时兼课金50。
将Person定义为抽象类,pay为抽象方法,设计程序实现多态性。
(1)源程序:
abstractclassPerson{
protectedStringname;
protecteddoubleclassum;
publicPerson(){
this.name="
;
classum=0;
publicPerson(Stringname,doubleclassum){
this.name=name;
this.classum=classum;
abstractpublicdoublepay();
publicStringtoString(){
return"
姓名:
+this.name+"
\t工资支出:
+this.pay()+"
\n"
classAssistantextendsPerson{
publicAssistant(Stringname,doubleclassum){
super(name,classum);
publicdoublepay(){
return800+classum*25;
classInstructorextendsPerson{
publicInstructor(Stringname,doubleclassum){
return1000+classum*35;
classAssistantProfessonextendsPerson{
publicAssistantProfesson(Stringname,doubleclassum){
return1200+classum*40;
classProfessorextendsPerson{
publicProfessor(Stringname,doubleclassum){
return1400+classum*50;
publicclasssy8_2{
Personps[]=newPerson[4];
ps[0]=newAssistant("
张三"
120);
ps[1]=newInstructor("
赵二"
130);
ps[2]=newAssistantProfesson("
李四"
125);
ps[3]=newProfessor("
王五"
134);
Stringoutput="
for(inti=0;
i<
ps.length;
i++)
output+=ps[i];
System.out.println(output);
(2)实验结果:
3.定义一个抽象类Bank,它包含有oneyearRate(定期利率)、oneyearNationaldebt(国债利率)和interestRate(活期利率)常数和count()方法及show()方法。
Count()方法用于对本息合计(存款本金+利息)进行计算,而show()方法用于对本息合计进行显示。
由于对不同的存款方式,利率是不同的,因此此程序分别定义多个子类实现对抽象类的继承,实现对利率的计算和显示。
注意:
本程序定义了定期利率、活期利率、国债利率三种利率,按照一万元钱位存款单位进行统计,计算每种利率下存款一年后的本息合计。
除了国债外,其他利率都要交纳个人所得税20%。
abstractclassBank{
protectedstaticfinalfloatoneyearRate=0.0178f;
protectedstaticfinalfloatoneyearNationaldebt=0.0198f;
protectedstaticfinalfloatinterestRate=0.0078f;
abstractvoidcount();
abstractvoidshow();
classInterestRateCalcuteextendsBank{
privatefloatsaving;
privatedoublesum;
InterestRateCalcute(floati){
saving=i;
count();
publicvoidcount(){
sum=saving+(saving*Bank.interestRate*0.8);
publicvoidshow(){
Withcurrentinterestrate,sum="
+sum);
classOneyearNationaldebtCalcuteextendsBank{
OneyearNationaldebtCalcute(floati){
Withnationaldebtrate,sum="
classOneyearRateCalcuteextendsBank{
OneyearRateCalcute(floati){
publicvoidcount()
{
sum=saving+(saving*Bank.oneyearRate*0.8);
publicvoidshow()
Withfixedrate,sum="
classCalculate{
publicstaticvoidmain(Stringargs[])
intmon=10000;
OneyearRateCalcuterate=newOneyearRateCalcute(mon);
rate.show();
OneyearNationaldebtCalcutedebt=newOneyearNationaldebtCalcute(mon);
debt.show();
InterestRateCalcuteinterest=newInterestRateCalcute(mon);
interest.show();
四、实验小结(包括问题和解决方法、心得体会等)
本次实验中,我们主要练习编译了跟抽象类有关的相关程序。
其中主要包括已知抽象方法编写抽象类、抽象类抽象方法实现多态性、通过定义多个子类来实现对类的继承。
由于课前试验代码老师已经给出,所以我们完成得比较顺利。
通过本次实验,我基本掌握了实现多态的方法,也练习了抽象类和抽象方法的定义和使用,都掌握得比较好。
以后也还需要多加练习,能更加熟悉。
五、指导教师评语
成绩
批阅人
日期