java实验报告8.docx
- 文档编号:12255242
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:10
- 大小:50.22KB
java实验报告8.docx
《java实验报告8.docx》由会员分享,可在线阅读,更多相关《java实验报告8.docx(10页珍藏版)》请在冰豆网上搜索。
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)实验结果: 四、实验小结(包括问题和解决方法、心得体会等) 本次实验中,我们主要练习编译了跟抽象类有关的相关程序。 其中主要包括已知抽象方法编写抽象类、抽象类抽象方法实现多态性、通过定义多个子类来实现对类的继承。 由于课前试验代码老师已经给出,所以我们完成得比较顺利。 通过本次实验,我基本掌握了实现多态的方法,也练习了抽象类和抽象方法的定义和使用,都掌握得比较好。 以后也还需要多加练习,能更加熟悉。 五、指导教师评语 成绩 批阅人 日期
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 实验 报告