最新第八次实验报告范文word版 14页.docx
《最新第八次实验报告范文word版 14页.docx》由会员分享,可在线阅读,更多相关《最新第八次实验报告范文word版 14页.docx(14页珍藏版)》请在冰豆网上搜索。
最新第八次实验报告范文word版14页
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!
==本文为word格式,下载后可方便编辑和修改!
==
第八次实验报告
第八次实验
实验1:
中国人、北京人和美国人
1.实验要求:
编写程序模拟中国人、美国人是人,北京人是中国人。
除主类外,程序中还有4个类:
People、ChinaPeople、AmericanPeople和BeijingPeople类。
要求如下:
(1)People类有权限是protected的double型成员变量height和weight,以及public
voidspeakHello()、publicvoidaverageHeight()和publicvoidaverageWeight()方法。
(2)ChinaPeople类是People的子类,新增了publicvoidaverageHeight()和public
voidaverageWeight()方法。
(3)AmericanPeople类是People的子类,新增方法publicvoidAmericanBoxing()。
要求AmericanPeople重写父类的publicvoidspeakHello()、publicvoidaverageHeight()和publicvoidaverageWeight()方法。
(4)BeijingPeople类是ChinaPeople的子类,新增publicvoidbeijingOpera()方
法。
2.实验代码:
//People.java
publicclassPeople{
protecteddoubleweight,height;
publicvoidspeakHello(){
System.out.println("yayayaya");
}
publicvoidaverageHeight(){
height=173;
System.out.println("averageheight:
"+height);
}
publicvoidaverageWeight(){
weight=70;
System.out.println("averageweight:
"+weight);
}
}
//ChinaPeople.java
publicclassChinaPeopleextendsPeople{
publicvoidspeakHello(){
System.out.println("您好");
}
publicvoidaverageHeight(){
height=168.78;
System.out.println("中国人的平均身高:
"+height+"厘米");
}
publicvoidaverageWeight(){
weight=65;
System.out.println("中国人的平均体重:
"+weight+"千克");
}
publicvoidchinaGongfu(){
System.out.println("坐如钟,站如松,睡如弓");
}
}
//AmericanPeople.java
publicclassAmericanPeopleextendsPeople{
publicvoidspeakHello(){
System.out.println("Howdoyoudo");
}
publicvoidaverageHeight(){
height=176;
System.out.println("American'saverageheight:
"+height+"厘米");
}
publicvoidaverageWeight(){
weight=75;
System.out.println("American'saverageweight:
"+weight+"kg");
}
publicvoidamericanBoxing(){
System.out.println("直拳,勾拳,组合拳");
}
}
//BeijingPeople.java
publicclassBeijingPeopleextendsChinaPeople{
publicvoidaverageHeight(){
height=172.5;
System.out.println("北京人的平均身高:
"+height+"厘米");
}
publicvoidaverageWeight(){
weight=70;
System.out.println("北京人得平均体重:
"+weight+"千克");
}
publicvoidbeijingOpera(){
System.out.println("花脸、青衣、花旦和老生");
}
}
//Example.java
publicclassExample{
publicstaticvoidmain(Stringarg[]){
ChinaPeoplechinaPeople=newChinaPeople();
AmericanPeopleamericanPeople=newAmericanPeople();
BeijingPeoplebeijingPeople=newBeijingPeople();
chinaPeople.speakHello();
americanPeople.speakHello();
beijingPeople.speakHello();
chinaPeople.averageHeight();
americanPeople.averageHeight();
beijingPeople.averageHeight();
chinaPeople.averageWeight();
americanPeople.averageWeight();
beijingPeople.averageWeight();
chinaPeople.chinaGongfu();
americanPeople.americanBoxing();
beijingPeople.beijingOpera();
beijingPeople.chinaGongfu();
}
}
3.实验结果:
4.实验分析:
(1)方法重写时要保证方法的名字、类型、参数的个数和类型同父类的某个方法完全想同。
这样,子类继承的方法才能被隐藏。
(2)子类在重写方法时,如果重写的方法是static方法,static关键字必须保留;如果重写的
方法是实例方法,重写时不可以用static修饰。
(3)如果子类可以继承父类的方法,子类就有权利重写这个方法,子类通过重写父类的方法
可以改变父类的具遗体行为。
5.实验后的练习:
People类中的
publicvoidspeakHello()
publicvoidaverageHeight()
publicvoidaverageWeight()
三个方法的方法体中的语句是否可以省略。
答:
可以省略,因为省略后结果没有变化
实验2:
银行计算利息
1.实验要求:
假设银行bank已经有了按整年year计算利息的一般方法,其中year只能取正整数。
比如,按整年计算的方法:
DoublecomputerInternet(){
Interest=year*0.35*saveMoney;
Returninterest;
}
建设银行constructionBank是bankde子类,准备隐藏继承的成员变量year,并重写计算利息的方法,即自己声明一个double型的year变量。
要求constructionbank和bankofDalian类是bank类的子类,constructionbank和bankofdalian都使用super调用隐藏的按整年计算利息的方法。
2.实验代码:
//Bank.java
publicclassBank{
intsavedMoney;
intyear;
doubleinterest;
doubleinterestRate=0.29;
publicdoublecomputerInterest(){
interest=year*interestRate*savedMoney;
returninterest;
}
publicvoidsetInterestRate(doublerate){
interestRate=rate;
}
}
//ConstructionBank.java
publicclassConstructionBankextendsBank{
doubleyear;
publicdoublecomputerInterest(){
super.year=(int)year;
doubler=year-(int)year;
intday=(int)(r*1000);
doubleyearInterest=puterInterest();
doubledayInterest=day*0.0001*savedMoney;
interest=yearInterest+dayInterest;
System.out.printf("%d元存在建设银行%d年零%d天的利息:
%f元\n",savedMoney,super.year,day,interest);
returninterest;
}
}
//BankOfDalian.java
publicclassBankOfDalianextendsBank{
doubleyear;
publicdoublecomputerInterest(){
super.year=(int)year;
doubler=year-(int)year;
intday=(int)(r*1000);
doubleyearInterest=puterInterest();
doubledayInterest=day*0.00012*savedMoney;
interest=yearInterest+dayInterest;
System.out.printf("%d元存在大连银行%d年零%d天的利息:
%f元\n",savedMoney,super.year,day,interest);
returninterest;
}
}
//SaveMoney.java
publicclassSaveMoney{
publicstaticvoidmain(Stringargs[]){
intamount=8000;
ConstructionBankbank1=newConstructionBank();
bank1.savedMoney=amount;
bank1.year=8.236;
bank1.setInterestRate(0.035);
doubleinterest1=puterInterest();
BankOfDalianbank2=newBankOfDalian();
bank2.savedMoney=amount;
bank2.year=8.236;
bank2.setInterestRate(0.035);
doubleinterest2=puterInterest();
System.out.printf("两个银行利息相差%f元\n",interest2-interest1);
}
}
3.实验结果:
4.实验分析:
(1)子类不继承父类的构造方法,因此子类在其构造方法中需使用super来调用父类的
构造方法,并且super必须是子类构造方法中的头一条语句。
(2)当super调用被隐藏的方法时,该方法中出现的成员变量是被子类隐藏的成员变量
或继承的成员变量。
5.实验后的练习:
参照建设银行或大连银行,在编写一个商业银行,让程序输出8000元存在商业银行8年零236天的利息。
//Bank.java
publicclassBank{
intsavedMoney;
intyear;
doubleinterest;
doubleinterestRate=0.29;
publicdoublecomputerInterest(){
interest=year*interestRate*savedMoney;
returninterest;
}
publicvoidsetInterestRate(doublerate){
interestRate=rate;
}
}
//CommercialBank
publicclassCommercialBankextendsBank{
doubleyear;
publicdoublecomputerInterest(){
super.year=(int)year;
doubler=year-(int)year;
intday=(int)(r*1000);
doubleyearInterest=puterInterest();
doubledayInterest=day*0.00012*savedMoney;
interest=yearInterest+dayInterest;
System.out.printf("%d元存在商业银行%d
\n",savedMoney,super.year,day,interest);
returninterest;
}
}
//SaveMoney.java
publicclassSaveMoney{
publicstaticvoidmain(Stringargs[]){
intamount=8000;
CommercialBankbank=newCommercialBank();
bank.savedMoney=amount;
bank.year=8.236;
bank.setInterestRate(0.035);
doubleinterest=puterInterest();
}
}年零%d天的利息:
%f元
实验3:
公司支出的总薪水
1.实验要求:
要求有一个abstract类,类名为Employee。
Employee的子类有YearWorker、MonthWorker、WeekWorker。
YearWorker对象按年领取薪水,MonthWorker按月领取薪水、WeekWorker按周领取的薪水。
Employee类有一个abstract方法:
publicabstractearnings();
子类必须重写父类的earings()方法,给出各自领取报酬的具体方式。
有一个Company类,该类用Employee对象数组作为成员,Employee对象数组的单元可以是YearWorker对象的上转型对象、MonthWorker独享的上转型独享或weekworker对象的上转型独享。
程序能输出Company对象一年需要支付的薪水总额。
2.实验代码:
abstractclassEmployee{
publicabstractdoubleearnings();
}
classYearWorkerextendsEmployee{
publicdoubleearnings(){
return1201X;
}
}
classMonthWorkerextendsEmployee{
publicdoubleearnings(){
return12*2300;
}
}
classWeekWorkerextendsEmployee{
publicdoubleearnings(){
return52*780;
}
}
classCompany{
Employee[]employee;
doublesalaries=0;
Company(Employee[]employee){
this.employee=employee;
}
publicdoublesalariesPay(){
salaries=0;
for(inti=0;isalaries=salaries+employee[i].earnings();
}
returnsalaries;
}
}
publicclassCompanySalary{
publicstaticvoidmain(Stringargs[]){
Employee[]employee=newEmployee[29];
for(inti=0;iif(i%3==0)
employee[i]=newWeekWorker();
elseif(i%3==1)
employee[i]=newMonthWorker();
elseif(i%3==2)
employee[i]=newYearWorker();
}
Companycompany=newCompany(employee);
System.out.println("公司薪水总额:
"+company.salariesPay()+"元");
}
}
3.实验结果:
4.实验分析:
尽管abstract类不能创建对象,但abstract类声明的对象可以存放子类对象的引用,即成为子类对象的上转型对象。
5.实验后的练习:
(1)子类yearworker如果不重写earnings()方法,程序编译是提示怎么样的错误。
YearWorker不是抽象的,并且未覆盖Employee中的抽象方法earnings()
classYearWorkerextendsEmployee{
(2)在增加一种雇员,并计算公司一年的总薪水。
classDayWorkerextendsEmployee{
publicdoubleearnings(){
return365*100;
}
}
将for语句改写为:
for(inti=0;iif(i%4==0)
employee[i]=newWeekWorker();
elseif(i%4==1)
employee[i]=newMonthWorker();
elseif(i%4==2)
employee[i]=newYearWorker();
elseif(i%4==3)
employee[i]=newDayWorker();
}
∙荐计算机上机实验内容及实验报告要求
∙荐构建学校德育管理与评价体系的实验报告
∙荐化学实验报告格式
∙荐大学物理实验课程设计实验报告
∙荐电路实验报告要求