java实验报告8.docx

上传人:b****4 文档编号:12255242 上传时间:2023-04-17 格式:DOCX 页数:10 大小:50.22KB
下载 相关 举报
java实验报告8.docx_第1页
第1页 / 共10页
java实验报告8.docx_第2页
第2页 / 共10页
java实验报告8.docx_第3页
第3页 / 共10页
java实验报告8.docx_第4页
第4页 / 共10页
java实验报告8.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

java实验报告8.docx

《java实验报告8.docx》由会员分享,可在线阅读,更多相关《java实验报告8.docx(10页珍藏版)》请在冰豆网上搜索。

java实验报告8.docx

java实验报告8

 

实验报告

(2014/2015学年第2学期)

 

课程名称

JAVA程序设计

实验名称

抽象类和抽象方法

实验时间

2015

5

7

指导单位

计算机学院/软件学院

软件工程系

指导教师

周莉

 

学生姓名

班级学号

学院(系)

计算机软件学院

专业

计算机科学与技术

实验名称

抽象类和抽象方法

指导教师

周莉

实验类型

上机

实验学时

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{

publicvoidf(intx){

System.out.println("Hello:

"+x);

}

publicvoidg(intx,inty){

intz=x-y;

System.out.println(z);

}

publicdoubleh(doublex){

returnMath.sqrt(x);

}

}

classA3extendsA{

publicvoidf(intx){

System.out.println("你好:

"+x);

}

publicvoidg(intx,inty){

doublez=(double)x/y;

System.out.println(z);

}

publicdoubleh(doublex){

return1/x;

}

}

publicclassZuoYe5_2{

publicstaticvoidmain(Stringargs[]){

Aa=newA1();

a.f(10);

a.g(12,20);

System.out.println(a.h(100));

a=newA2();

a.f(10);

a.g(12,20);

System.out.println(a.h(100));

a=newA3();

a.f(10);

a.g(12,20);

System.out.println(a.h(100));

}

}

(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){

super(name,classum);

}

publicdoublepay(){

return1000+classum*35;

}

}

classAssistantProfessonextendsPerson{

publicAssistantProfesson(Stringname,doubleclassum){

super(name,classum);

}

publicdoublepay(){

return1200+classum*40;

}

}

classProfessorextendsPerson{

publicProfessor(Stringname,doubleclassum){

super(name,classum);

}

publicdoublepay(){

return1400+classum*50;

}

}

publicclasssy8_2{

publicstaticvoidmain(Stringargs[]){

Personps[]=newPerson[4];

ps[0]=newAssistant("张三",120);

ps[1]=newInstructor("赵二",130);

ps[2]=newAssistantProfesson("李四",125);

ps[3]=newProfessor("王五",134);

Stringoutput="";

for(inti=0;i

output+=ps[i];

System.out.println(output);

}

}

(2)实验结果:

3.定义一个抽象类Bank,它包含有oneyearRate(定期利率)、oneyearNationaldebt(国债利率)和interestRate(活期利率)常数和count()方法及show()方法。

Count()方法用于对本息合计(存款本金+利息)进行计算,而show()方法用于对本息合计进行显示。

由于对不同的存款方式,利率是不同的,因此此程序分别定义多个子类实现对抽象类的继承,实现对利率的计算和显示。

注意:

本程序定义了定期利率、活期利率、国债利率三种利率,按照一万元钱位存款单位进行统计,计算每种利率下存款一年后的本息合计。

除了国债外,其他利率都要交纳个人所得税20%。

(1)源程序:

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(){

System.out.println("Withcurrentinterestrate,sum="+sum);

}

}

classOneyearNationaldebtCalcuteextendsBank{

privatefloatsaving;

privatedoublesum;

OneyearNationaldebtCalcute(floati){

saving=i;count();

}

publicvoidcount(){

sum=saving+(saving*Bank.interestRate*0.8);

}

publicvoidshow(){

System.out.println("Withnationaldebtrate,sum="+sum);

}

}

classOneyearRateCalcuteextendsBank{

privatefloatsaving;

privatedoublesum;

OneyearRateCalcute(floati){

saving=i;count();

}

publicvoidcount()

{

sum=saving+(saving*Bank.oneyearRate*0.8);

}

publicvoidshow()

{

System.out.println("Withfixedrate,sum="+sum);

}

}

classCalculate{

publicstaticvoidmain(Stringargs[])

{

intmon=10000;

OneyearRateCalcuterate=newOneyearRateCalcute(mon);

rate.show();

OneyearNationaldebtCalcutedebt=newOneyearNationaldebtCalcute(mon);

debt.show();

InterestRateCalcuteinterest=newInterestRateCalcute(mon);

interest.show();

}

}

(2)实验结果:

四、实验小结(包括问题和解决方法、心得体会等)

本次实验中,我们主要练习编译了跟抽象类有关的相关程序。

其中主要包括已知抽象方法编写抽象类、抽象类抽象方法实现多态性、通过定义多个子类来实现对类的继承。

由于课前试验代码老师已经给出,所以我们完成得比较顺利。

通过本次实验,我基本掌握了实现多态的方法,也练习了抽象类和抽象方法的定义和使用,都掌握得比较好。

以后也还需要多加练习,能更加熟悉。

五、指导教师评语

成绩

批阅人

日期

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1