您好,欢迎访问三七文档
实验五继承与接口1.实验目的1、掌握类的继承细节内容,包括子类的继承、子类对象创建、成员变量的继承与隐藏、方法的继承与重写2、掌握重写的目的以及怎样使用super关键字3、掌握上转型对象与接口回调技术4、掌握类怎样实现接口,及面向接口的编程思想2.实验内容1、根据附录里的源代码,按照注释要求,完成代码填空,使程序能够运行得出结果。1)实验1中国人与美国人2)实验2银行与利息3)实验3面积之和4)实验4歌手大赛5)实验5天气预报2、设计编写程序完成以下任务。1)根据要求修改实验2,参照建设银行再编写一个商业银行(广发行),让程序输出8000元在广发行8年零212天的利息。2)根据要求修改实验3,再增加一种几何图形(梯形),并让主类中的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类型)和速度speed(double类型)。(b)至少提供一个有参的构造方法(要求品牌和颜色可以初始化为任意值,但速度的初始值必须为0)。(c)为属性提供访问器方法。注意:汽车品牌一旦初始化之后不能修改。(d)定义一个一般方法run(),用打印语句描述汽车奔跑的功能。定义测试类VehicleTest,在其main方法中创建一个品牌为“benz”、颜色为“black”的汽车。(2)定义一个Vehicle类的子类轿车类Car,要求如下:(a)轿车有自己的属性载人数loader(int类型)。(b)提供该类初始化属性的构造方法。(c)重新定义run(),用打印语句描述轿车奔跑的功能。(d)定义测试类Test,在其main方法中创建一个品牌为“Honda”、颜色为“red”,载人数为2人的轿车。面向对象基础出过类似的,这个把继承引入了6)Cola公司的雇员分为以下若干类:(知识点:多态)(1)ColaEmployee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:getSalary(intmonth)根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。(2)SalariedEmployee:ColaEmployee的子类,拿固定工资的员工。属性:月薪(3)HourlyEmployee:ColaEmployee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、每月工作的小时数(4)SalesEmployee:ColaEmployee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率(5)定义一个类Company,在该类中写一个方法,调用该方法可以打印出某月某个员工的工资数额,写一个测试类TestCompany,在main方法,把若干各种类型的员工放在一个ColaEmployee数组里,并单元出数组中每个员工当月的工资。知识点:继承与多态7)利用接口实现动态的创建对象:(知识点:接口)(1)创建4个类1苹果2香蕉3葡萄4园丁(2)在三种水果的构造方法中打印一句话.以苹果类为例classapple{publicapple(){System.out.println(“创建了一个苹果类的对象”);}}(3)类图如下:ApplePearOranges+create():FruitGardener接口Fruit(4)要求从控制台输入一个字符串,根据字符串的值来判断创建三种水果中哪个类的对象。运行结果如图:3.实验步骤略4.评分标准1.A——内容功能完善,编程风格好,人机接口界面好;2.B——内容功能完善,编程风格良好,人机接口界面良好;3.C——完成必做内容;4.D——能完成必做内容;5.E——未按时完成必做内容,或者抄袭(雷同者全部为E).参照书上实验按模版要求,将【代码】替换为Java程序代码,编写好完整的程序文档,最后运行得到的相关文件,把实验所得文件一起打包上交。(压缩包的文件名为:学号后三位和名字开头字母,如109zhh.RAR|ZIP)附录:实验1中国人与美国人模板代码People.javapublicclassPeople{protecteddoubleweight,height;publicvoidspeakHello(){System.out.println(yayayaya);}publicvoidaverageHeight(){height=173;System.out.println(averageheight:+height);}publicvoidaverageWeight(){weight=70;System.out.println(averageweight:+weight);}}ChinaPeople.javapublicclassChinaPeopleextendsPeople{publicvoidspeakHello(){System.out.println(你好);}publicvoidaverageHeight(){height=168.78;System.out.println(中国人的平均身高:+height+厘米);}//【代码1】//重写publicvoidaverageWeight()方法,输出:中国人的平均体重:65公斤publicvoidchinaGongfu(){System.out.println(坐如钟,站如松,睡如弓);}}AmericanPeople.javapublicclassAmericanPeopleextendsPeople{//【代码2】//重写publicvoidspeakHello()方法,输出:Howdoyoudo//【代码3】//重写publicvoidaverageHeight()方法,输出:American'saverageheight:176cmpublicvoidaverageWeight(){weight=75;System.out.println(American'saverageweight:+weight+kg);}publicvoidamericanBoxing(){System.out.println(直拳、钩拳、组合拳);}}BeijingPeople.javapublicclassBeijingPeopleextendsChinaPeople{//【代码4】//重写publicvoidaverageHeight()方法,输出:北京人的平均身高:172.5厘米//【代码5】//重写publicvoidaverageWeight()方法,输出:北京人的平均体重:70公斤publicvoidbeijingOpera(){System.out.println(花脸、青衣、花旦和老生);}}Example.javapublicclassExample{publicstaticvoidmain(String[]args){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();}}实验2银行与利息模板代码Bank.javapublicclassBank{intsavedMoney;intyear;doubleinterest;doubleinterestRate=0.29;publicdoublecomputerInterest(){interest=year*interestRate*savedMoney;returninterest;}publicvoidsetInterestRate(doublerate){interestRate=rate;}}ConstructionBank.javapublicclassConstructionBankextendsBank{doubleyear;publicdoublecomputerInterest(){super.year=(int)year;doubler=year-(int)year;intday=(int)(r*1000);doubleyearInterest=//【代码1】//super调用隐藏的computerInterest()方法doubledayInterest=day*0.0001*savedMoney;interest=yearInterest+dayInterest;System.out.printf(%d元存在建设银行%d年零%d天的利息:%f元\n,savedMoney,super.year,day,interest);returninterest;}}BankOfDalian.javapublicclassBankOfDalianextendsBank{doubleyear;publicdoublecomputerInterest(){super.year=(int)year;doubler=year-(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.javapublicclassSaveMoney{publicstaticvoidmain(String[]args){intamount=8000;ConstructionBankbank1=newConstructionBank();bank1.savedMoney=amount;bank1.year=8.236;bank1.setInterestRate(0.035);doubleinterest1=bank1.computerInterest();BankOfDalianbank2=newBankOfDalian();bank2.savedMoney=amount;bank2.year=8.236;bank2.setInterestRate(0.035);doubleintere
本文标题:实验五继承与接口
链接地址:https://www.777doc.com/doc-2459143 .html