实验五-继承与接口_第1页
实验五-继承与接口_第2页
实验五-继承与接口_第3页
实验五-继承与接口_第4页
实验五-继承与接口_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验五继承与接口实验目的1、掌握类的继承细节内容,包括子类的继承、子类对象创建、成员变量的继承与隐藏、方法的继承与重写2、掌握重写的目的以及怎样使用super关键字3、掌握上转型对象与接口回调技术4、掌握类怎样实现接口,及面向接口的编程思想实验内容1、根据附录里的源代码,按照注释要求,完成代码填空,使程序能够运行得出结果。1)实验1中国人与美国人2)实验2银行与利息3)实验3面积之和4)实验4歌手大赛5)实验5天气预报2、设计编写程序完成以下任务。1)根据要求修改实验2,参照建设银行再编写一个商业银行(广发行),让程序输出8000元在广发行8年零212天的利息。2)根据要求修改实验3,再增加一

2、种几何图形(梯形),并让主类中的tuxing的某些元素是梯形的上转型对象。3)仿照实验5编写一个程序实现模拟水杯中的水在不同温度下可能出现的状态。4)编写一个接口并创建两个实现该接口的类A、B。A、B类实现了接口的f方法,A类的f方法内容为计算1!+3!+5!+9!并返回结果,B类的f方法内容为计算2!+4!+6!+10!也返回结果;再编一个执行类,执行类运行时要求通过接口回调方式用同一个对象实例分别调用A类的f方法和B类的f方法。5)(1)定义一个汽车类Vehicle,要求如下:(知识点:类的继承方法的覆盖)(a)属性包括:汽车品牌brand(String类型)、颜色color(String

3、类型)和速度speed(double类型)。(b)至少提供一个有参的构造方法(要求品牌和颜色可以初始化为任意值,但速度的初始值必须为0)。(c)为属性提供访问器方法。注意:汽车品牌一旦初始化之后不能修改。(d)定义一个一般方法run(),用打印语句描述汽车奔跑的功能。定义测试类VehicleTest,在其main方法中创建一个品牌为“benz”、颜色为“black”的汽车。(2)定义一个Vehicle类的子类轿车类Car,要求如下:(a)轿车有自己的属性载人数loader(int类型)。(b)提供该类初始化属性的构造方法。(c)重新定义run(),用打印语句描述轿车奔跑的功能。(d)定义测试类

4、Test,在其main方法中创建一个品牌为“Honda”、颜色为“red”,载人数为2人的轿车。面向对象基础出过类似的,这个把继承引入了6)Cola公司的雇员分为以下若干类:(知识点:多态)ColaEmployee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:getSalary(intmonth)根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。SalariedEmployee:ColaEmployee的子类,拿固定工资的员工。属性:月薪HourlyEmployee:ColaEmployee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5

5、倍工资发放。属性:每小时的工资、每月工作的小时数SalesEmployee:ColaEmployee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率(5)定义一个类Company,在该类中写一个方法,调用该方法可以打印出某月某个员工的工资数额,写一个测试类TestCompany,在main方法,把若干各种类型的员工放在一个ColaEmployee数组里,并单元出数组中每个员工当月的工资。知识点:继承与多态7)利用接口实现动态的创建对象:(知识点:接口)(1)创建4个类1苹果2香蕉3葡萄4园丁(2)在三种水果的构造方法中打印一句话.以苹果类为例classapplepublic

6、apple()System.out.println(“创建了一个苹果类的对象”);(3)类图如下:FruitPmrGardener+create():Fruit(4)要求从控制台输入一个字符串,根据字符串的值来判断创建三种水果中哪个类的对象。运行结果如图:FilsSd.itScEefaatarHavigate打3rdb电m=Jay-doc|lJeclaratimtestJivaApplicationC:IiHrtsr苹果另痛了一个幸果的对象.实验步骤实验一、1实验一、2Problems璘Javadoc良DechraftiomiSaveMoneyJavaApplicationE:MyEc吕的元看

7、在史金曼行吕正隼235五的*电24Z8.吕M仔仔0元的的五号在立逢汽行吕三笔235五的利奥二2%66,5600&x西馆行私也tl舒7,7触晅0元实验一、3实验一、4实验一、5实验二、1packageSFirst;publicclassBankintsavedMoney;intyear;doubleinterest;doubleinterestRate=0.29;publicdoublecomputerInterest()interest=year*interestRate*savedMoney;returninterest;publicvoidsetInterestRate(doublerat

8、e)interestRate=rate;)packageSFirst;publicclassGuangFaBankextendsBank(doubleyear;publicdoublecomputerlnterest()super.year=(int)year;doubler=year-(int)year;intday=(int)(r*1000);doubleyearInterest=puterInterest();/【代码1】/super调用隐藏的computerInterest()方法doubledayInterest=day*0.0001*savedMoney;interest=year

9、Interest+dayInterest;returninterest;packageSFirst;publicclassSaveMoneypublicstaticvoidmain(Stringargs)intamount=8000;GuangFaBankbank1=newGuangFaBank();bank1.savedMoney=amount;bank1.year=8.212;bank1.setInterestRate(0.035);doubleinterest1=puterInterest();System.out.println(8000元在广发行8年零212天的利息为:+intere

10、st1);实验结果弑Problems:苏Javadoc陶DeclarationcterminatedSaveMoney1JavaAppliestio记左广及H目容隼212王第尼电拈:248.8实验二、2packageSSecond;publicabstractclassGeometrypublicabstractdoublegetArea();)packageSSecond;publicclassMainClasspublicstaticvoidmain(Stringargs)Trapezoidtuxing=newTrapezoid(4.7,7.9,7);/有29个Geometry对象doub

11、les=tuxing.getArea();System.out.printf(梯形的面积为:s);)packageSSecond;publicclassTrapezoidextendsGeometry(doublea,b,h;Trapezoid(doublea,doubleb,doubleh)this.a=a;this.b=b;this.h=h;)/【代码2】/重写getArea()方法OverridepublicdoublegetArea()/TODOAuto-generatedmethodstubreturn(a+b)*h/2;)实验结果Problenns璘JavadocMainChss弊

12、马第面程出二44.1000实验二、3packageSThird;publicclassBoiledStateimplementsWaterStateOverridepublicvoidshowState()/TODOAuto-generatedmethodstubSystem.out.println(开水。);/【代码3】/重写publicvoidshowState()方法packageSThird;publicclassIceStateimplementsWaterStatepublicvoidshowState()System.out.print(结冰。);packageSThird;pu

13、blicclassLittleWarmStateimplementsWaterState/【代码1】/重写publicvoidshowState()方法OverridepublicvoidshowState()/TODOAuto-generatedmethodstubSystem.out.println(微凉。);packageSThird;publicclassWarmStateimplementsWaterStateOverridepublicvoidshowState()/TODOAuto-generatedmethodstubSystem.out.println(温水。);/【代码2】

14、/重写publicvoidshowState()方法packageSThird;publicclassWaterWaterStatestate;publicvoidshow()state.showState();publicvoidsetState(WaterStates)state=s;)packageSThird;publicclassWaterForecastpublicstaticvoidmain(Stringargs)WaterwaterState=newWater。;System.out.print(n温度在90-100时水杯水的状态:);waterState.setState(n

15、ewBoiledState();waterState.show。;System.out.print(n温度在50-80时水杯水的状态:);waterState.setState(newWarmState();waterState.show。;System.out.print(n温度在30-50时水杯水的状态:);waterState.setState(newLittleWarmState();waterState.show。;System.out.print(n温度在0度下时水杯水的状态:”);waterState.setState(newIceState();waterState.show。

16、;)packageSThird;publicinterfaceWaterStatepublicvoidshowState();)实验结果且FProblems*Javadoc电DeclarationterminatedWaterForecastJavaApplicationE:MyEcl蔡豆在9好-1随寸水杯的找在:开忒.之中及5。-吕64水樨水的根在:荒水.意宜空39-5团外水杯笊的壮耳,徵近.I施宜在有哎下才正朽水的就右:溶述,packageSForth;publicclassAimplementsobjectpublicintf(inta,intb)intsum=0,temp=1;for(

17、inti=a;i=b;i=i+2)for(intj=1;j=i;j+)temp*=j;sum+=temp;temp=1;returnsum;packageSForth;publicclassBimplementsobjectpublicintf(inta,intb)intsum=0,temp=1;for(inti=a;i=b;i=i+2)for(intj=1;jTest4JavaApplicationEEcliebinarycc1:H-3lH-5!.+9!的妈用=3680472l4-4:4-0!的洛原有:3669B6-6实验五packageSFifth;publicclassCarextend

18、sVehicleintloader;publicCar(Stringbrand,Stringcolor,doublespeed,intl)super(brand,color,speed);this.loader=l;/TODOAuto-generatedconstructorstubpublicvoidrun()System.out.println(颜色为+super.getColor()+的+super.getBrand()+汽车的时速为:+super.getSpeed();packageSFifth;publicclassTestpublicstaticvoidmain(Stringarg

19、s)/TODOAuto-generatedmethodstubCarc=newCar(Honda,red”,300.0,20);c.run();packageSFifth;publicclassVehicleprivateStringbrand=BMW;/汽车品牌privateStringcolor=red;/汽车颜色privatedoublespeed=0;/汽车时速publicStringgetColor()returncolor;publicvoidsetColor(Stringcolor)this.color=color;publicdoublegetSpeed()returnspee

20、d;publicvoidsetSpeed(doublespeed)this.speed=speed;publicStringgetBrand()returnbrand;publicVehicle(Stringbrand,Stringcolor,doublespeed)/TODOAuto-generatedconstructorstubthis.brand=brand;this.color=color;this.speed=speed;publicvoidrun()System.out.println(brand+汽车的时速为:+speed);packageSFifth;publicclassV

21、ehicleTestpublicstaticvoidmain(Stringargs)/TODOAuto-generatedmethodstubVehiclev=newVehicle(benz,black,200.0);v.run();)实验结果Problems濡Jg己dot篇DeH日VehicleTest1Javaben普工事的甘双灯二2&9.0实验六packageSSixth;publicclassColaEmployeeStringname;/员工姓名intmonth;/员工生日月份publicStringgetName()returnname;publicvoidsetName(Stri

22、ngname)=name;publicintgetMonth()returnmonth;publicvoidsetMonth(intmonth)this.month=month;intgetSalary(intmonth)if(month=this.month)return100;elsereturn0;packageSSixth;publicclassCompanyextendsColaEmployeevoidprint(Stringname,doublesalary,intmonth)StringName=name;doubleSalary=salary;intMonth=month;Sy

23、stem.out.println(员工+Name+在+Month+月+的薪资为:+Salary);packageSSixth;publicclassHourlyEmployeeextendsColaEmployeedoublehours;/每月工作的时间doublehsalary;/每小时的工资Companyc=newCompany();publicHourlyEmployee(Stringname,intmonth,doublehours,doublehsalary)/TODOAuto-generatedconstructorstubthis.hours=hours;this.hsalary

24、=hsalary;this.month=month;=name;publicdoublegetHours()returnhours;publicvoidsetHours(doublehours)this.hours=hours;publicdoublegetHsalary()returnhsalary;publicvoidsetHsalary(doublehsalary)this.hsalary=hsalary;publicintgetSalary(intmonth)if(this.hours=160)this.hsalary=this.hsalary*this.hours+super.get

25、Salary(month);c.print(name,hsalary,month);return0;elsethis.hsalary=(this.hours-160)*this.hsalary*1.5+160*this.hsalary+super.getSalary(month);c.print(name,hsalary,month);return0;packageSSixth;publicclassSalariedEmployeeextendsColaEmployeedoublesalary;/员工固定薪资(按月)Companyc=newCompany();publicSalariedEmp

26、loyee(Stringname,intmonth,doublesalary)/TODOAuto-generatedconstructorstub=name;this.month=month;this.salary=salary;publicintgetSalary(intmonth)this.salary=salary+super.getSalary(month);c.print(name,salary,month);return0;packageSSixth;publicclassSalesEmployeeextendsColaEmployeedoublemoney;/月销售额double

27、ticheng;/提成率Companyc=newCompany();publicSalesEmployee(Stringname,intmonth,doublemoney,doubleticheng)/TODOAuto-generatedconstructorstubthis.money=money;this.month=month;=name;this.ticheng=ticheng;publicdoublegetMoney()returnmoney;publicvoidsetMoney(doublemoney)this.money=money;publicdoublegetTicheng(

28、)returnticheng;publicvoidsetTicheng(doubleticheng)this.ticheng=ticheng;publicintgetSalary(intmonth)this.money=money+super.getSalary(month)+(money*ticheng);c.print(name,money,month);return0;packageSSixth;publicclassSalesEmployeeextendsColaEmployeedoublemoney;/月销售额doubleticheng;/提成率Companyc=newCompany

29、();publicSalesEmployee(Stringname,intmonth,doublemoney,doubleticheng)/TODOAuto-generatedconstructorstubthis.money=money;this.month=month;=name;this.ticheng=ticheng;publicdoublegetMoney()returnmoney;publicvoidsetMoney(doublemoney)this.money=money;publicdoublegetTicheng()returnticheng;)publicvoidsetTi

30、cheng(doubleticheng)this.ticheng=ticheng;)publicintgetSalary(intmonth)this.money=money+super.getSalary(month)+(money*ticheng);c.print(name,money,month);return0;)packageSSixth;publicclassTestcompanypublicstaticvoidmain(Stringargs)/TODOAuto-generatedmethodstubColaEmployeece=newColaEmployee3;ce0=newSal

31、ariedEmployee(aa”,9,3000.0);ce1=newHourlyEmployee(bb”,3,2000.0,180);ce2=newSalesEmployee(cc”,6,6000,0.3);ce0.getSalary(2);ce1.getSalary(2);ce2.getSalary(2);实验结果保FProblems琮;Javadoc%Oeclara4ion用Console箕TestCo-mpany(1JJavaApplicationE:MyEclip&ebinf其Hmm在2,月的#资方:3际.0其ztbg?同为#矍后;5256-0.0戾hcu在2.目利手至台;78d0.

32、0实验七packageSSeventh;publicclassappleimplementsFruitpublicvoidapple()/TODOAuto-generatedmethodstubSystem.out.println(创建了一个苹果类的对象);Overridepublicvoidbanana()/TODOAuto-generatedmethodstubOverridepublicvoidpear()/TODOAuto-generatedmethodstubpackageSSeventh;publicclassbananaimplementsFruitpublicvoidbanan

33、a()/TODOAuto-generatedmethodstubSystem.out.println(BHHW-);Overridepublicvoidapple()/TODOAuto-generatedmethodstubOverridepublicvoidpear()/TODOAuto-generatedmethodstubpackageSSeventh;publicinterfaceFruitvoidapple();voidbanana();voidpear();packageSSeventh;publicclasspearimplementsFruitpublicvoidpear()/

34、TODOAuto-generatedmethodstubSystem.out.println(创建了一个梨子类的对象);Overridepublicvoidapple()/TODOAuto-generatedmethodstubOverridepublicvoidbanana()/TODOAuto-generatedmethodstubpackageSSeventh;importjava.util.Scanner;publicclassTestpublicstaticvoidmain(Stringargs)/TODOAuto-generatedmethodstub/Fruitf=newbana

35、na();Scannerinput=newScanner(System.in);System.out.println(请输入您要创建的类:”);Stringattr=input.nextLine();if(attr.equals(banana)Fruitfruit=newbanana();fruit.banana();elseif(attr.equals(apple)Fruitfruit=newapple();fruit.apple();elseif(attr.equals(pear)Fruitfruit=newpear();fruit.pear();)elseSystemut.println

36、(输入有误!);)实验结果麻fProblems邙Javadoc时Determinateds-TestJavaApp濡鞋入宅要七春期荚:banana上建TT叁要走的走坛.评分标准A内容功能完善,编程风格好,人机接口界面好;B内容功能完善,编程风格良好,人机接口界面良好;C完成必做内容;D能完成必做内容;E未按时完成必做内容,或者抄袭(雷同者全部为E).参照书上实验按模版要求,将【代码】替换为Java程序代码,编写好完整的程序文档,最后运行得到的相关文件,把实验所得文件一起打包上交。(压缩包的文件名为:学号后三位和名字开头字母,如109zhh.RAR|ZIP)模板代码附录:实验1中国人与美国人模板

37、代码People.javapublicclassPeopleprotecteddoubleweight,height;publicvoidspeakHello()System.out.println(yayayaya);publicvoidaverageHeight()height=173;System.out.println(averageheight:+height);publicvoidaverageWeight()weight=70;System.out.println(averageweight:+weight);ChinaPeople.javapublicclassChinaPeo

38、pleextendsPeoplepublicvoidspeakHello()System.out.println(你好);publicvoidaverageHeight()height=168.78;System.out.println(中国人的平均身高:+height+厘米);/【代码1】重写publicvoidaverageWeight()方法,输出:中国人的平均体重:65公斤publicvoidchinaGongfu()System.out.println,坐如钟,站如松,睡如弓);AmericanPeople.javapublicclassAmericanPeopleextendsPe

39、ople/【代码2】重写publicvoidspeakHello()方法,输出:Howdoyoudo/【代码3】/重写publicvoidaverageHeight()方法,输出:Americansaverageheight:176cmpublicvoidaverageWeight()weight=75;System.out.println(Americansaverageweight:+weight+kg);publicvoidamericanBoxing()System.out.println(直拳、钩拳、组合拳);BeijingPeople.javapublicclassBeijingP

40、eopleextendsChinaPeople/【代码4】重写publicvoidaverageHeight()方法,输出:北京人的平均身高:172.5厘米/【代码5】重写publicvoidaverageWeight()方法,输出:北京人的平均体重:70公斤publicvoidbeijingOpera()System.out.println(花脸、青衣、花旦和老生);Example.javapublicclassExamplepublicstaticvoidmain(Stringargs)ChinaPeoplechinaPeople=newChinaPeople();AmericanPeop

41、leamericanPeople=newAmericanPeople();BeijingPeoplebeijingPeople=newBeijingPeople();chinaPeople.speakHello();americanPeople.speakHello();beijingPeople.speakHello();chinaPeople.averageHeight();americanPeople.averageHeight();beijingPeople.averageHeight();chinaPeople.averageWeight();americanPeople.avera

42、geWeight();beijingPeople.averageWeight();chinaPeople.chinaGongfu();americanPeople.americanBoxing();beijingPeople.beijingOpera();beijingPeople.chinaGongfu();实验2银行与利息Bank.javapublicclassBankintsavedMoney;intyear;doubleinterest;doubleinterestRate=0.29;publicdoublecomputerInterest()interest=year*interes

43、tRate*savedMoney;returninterest;publicvoidsetInterestRate(doublerate)interestRate=rate;ConstructionBank.javapublicclassConstructionBankextendsBankdoubleyear;publicdoublecomputerInterest()super.year=(int)year;doubler=year-(int)year;intday=(int)(r*1000);doubleyearInterest=/【代码1】/super调用隐藏的computerInte

44、rest()方法doubledayInterest=day*0.0001*savedMoney;interest=yearInterest+dayInterest;System.out.printf(%d元存在建设银行%d年零d天的利息:%f元n,savedMoney,super.year,day,interest);returninterest;BankOfDalian.javapublicclassBankOfDalianextendsBankdoubleyear;publicdoublecomputerInterest()super.year=(int)year;doubler=year

45、-(int)year;intday=(int)(r*1000);doubleyearInterest=/【代码2】/super调用隐藏的computerInterest()方法doubledayInterest=day*0.00012*savedMoney;interest=yearInterest+dayInterest;System.out.printf(%d元存在大连银行%d年零%d天的利息:%f元n,savedMoney,super.year,day,interest);returninterest;SaveMoney.javapublicclassSaveMoneypublicsta

46、ticvoidmain(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);doubleinte

47、rest2=puterInterest();System.out.printf(两个银行利息相差元也”,血010512-血010511);实验3面积之和模板代码Geometry.javapublicabstractclassGeometrypublicabstractdoublegetArea();TotalArea.javapublicclassTotalAreaGeometrytuxing;doubletotalArea=0;publicvoidsetTuxing(Geometryt)tuxing=t;publicdoublecomputerTatalArea()/【代码3】用循环语句让t

48、uxing的元素调用getArea方法,并将返回的值累加到totalAreareturntotalArea;模板代码模板代码Rect.javapublicclassRectextendsGeometrydoublea,b;Rect(doublea,doubleb)this.a=a;this.b=b;/【代码1】重写getArea()方法Circle.javapublicclassCircleextendsGeometrydoubler;Circle(doubler)this.r=r;/【代码2】重写getArea()方法MainClass.javapublicclassMainClasspub

49、licstaticvoidmain(Stringargs)Geometry口tuxing=newGeometry29;/W29个Geometry对象for(inti=0;ituxing.length;i+)29个Geometry对象分成两类if(i%2=0)tuxingi=newRect(16+i,68);elseif(i%2=1)tuxingi=newCircle(10+i);TotalAreacomputer=newTotalArea();computer.setTuxing(tuxing);System.out.printf(各种图形的面积之和:n%f,puterTatalArea();

50、实验4歌手大赛ComputerAverage.javapublicinterfaceComputerAveragepublicdoubleaverage(doublex);SongGame.javapublicclassSongGameimplementsComputerAveragepublicdoubleaverage(doublex)intcount=x.length;doubleaver=0,temp=0;for(inti=0;icount;i+)for(intj=0;jcount;j+)if(xjxi)temp=xj;xj=xi;xi=temp;for(inti=0;i2)aver=aver/(co

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论