




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 Java 程序设计 实验四:继承、多态与接口 1. 提交期限和方法 期限:第 12 周周五(2015-11-27) 23: 59 pm 方法:由学习委员收集所有学生的实验报告, 以电子档的形式提交给任课教师 (发邮箱: )。 2. 实验目的及要求 掌握 Java 的基本数据类型、运算符、表达式和语句。 运行环境:JDK1.7 开发环境:Eclipse 3. 实验内容及题目 3.1 子类的继承与方法的重写 【题 1 中国人与美国人】在 Eclipse 中创建名为 Lab4 的新项目,编写程序模拟中国人、 美国人、北京人。除主类外,程序中有 4 个类:People、ChinaPeople、Ame
2、ricanPeople 和 BeijingPeople 类。要求如下: (1) People 类有权限是 protected 的 double 型成员变量:height 和 weight,以及 public void speakHello( )、public void averageHeight()禾口 public void averageWeight()方法。 2) ChinaPeople 类是 People 类的子类,新增了 public void chinaGongfu()方法。要求 ChinaPeople 重写父类的 public void speakHello ()、public
3、void averageHeight()禾口 public void averageWeight()方法。 (3) AmericanPeople 类是 People 的子类,新增 public void americanBoxing()方法。要求 AmericanPeople 重写父类的 public void speakHello( ) public void averageHeight()禾口 public void averageWeight()方法。 (4) BeijingPeople 类是 ChinaPeople 的子类,新增 public void beijingOpera()方法
4、。要求 BeijingPeople 重写父类的 public void speakHello( )、public void averageHeight()禾口 public void averageWeight()方法。 运行效果如下图。按下列代码模板要求,将【代码】部分替换为 |C】Ml虽帕 MJesktuuSLcM-lJfliWi Exuiiule . JAIVO C: MlonsrMtoo ktDpSLoJaidiJ.vA Example 您好 HUM dn rin 舊平均身高江稠.用厘米 Aneririrtn1 s r* Java 程序代码。 Jf.t, _ 備.吆-斤 fiverrt
5、pr? wr iph匕R 产益l:睡协耳 部分代码已给出: /People.java public class People protected double weight, height; public void speakHello() System.out.println(yayayaya); public void averageHeight() height = 173; System.out.println(average height: + height); public void averageWeight() weight = 70; System.out.println(a
6、verage weight: + weight); /ChinaPeople.java public class ChinaPeople extends People public void speakHello() System.out.println(” 您好); public void averageHeight() height = 168.78; System.out.println(” 中国人平均身高:+ height + 厘米); 重写 public void averageWeight()方法,输出:中国人平均体重:65 公斤 /【代码 1】 public void china
7、Gongfu() System.out.println(坐如钟,站如松,睡如弓 ”); /AmericanPeople.java public class AmericanPeople extends People 重写 public void speakHello()方法,输出How do you do /【代码 2】 重写 public void averageHeight()方法,输出 Americans average height:176 cm /【代码 3】 public void averageWeight() weight = 75; System.out.println(Am
8、ericans average weight: + weight + kg); public void americanBoxing() System.out.println(” 直拳、勾拳、组合拳”); /BeijingPeople.java public class BeijingPeople extends ChinaPeople 重写 public void averageHeight()方法,输出北京人的平均身高:172.5 厘米 /【代码 4】 重写 public void averageWeight()方法,输出北京人的平均体重:70 公斤 /【代码 5】 public void
9、 beijingOpera() System.out.println(”花脸、青衣、花旦和老生 ”); /Example.java public class Example public static void main(String args) ChinaPeople chinaPeople = new ChinaPeople(); AmericanPeople americanPeople = new AmericanPeople(); BeijingPeople beijingPeople = new BeijingPeople(); chinaPeople.speakHello();
10、americanPeople.speakHello(); beijingPeople.speakHello(); chinaPeople.averageHeight(); americanPeople.averageHeight(); beijingPeople.averageHeight(); chinaPeople.averageWeight(); americanPeople.averageWeight(); beijingPeople.averageWeight(); chinaPeople.chinaGongfu(); americanPeople.americanBoxing();
11、 beijingPeople.beijingOpera(); beijingPeople.chinaGongfu(); 【本题知识点】 1. 子类的继承性; 2. 子类对象的创建过程; 3. 方法的继承与重写。 【实验指导】 1. 如果子类可以继承父类的方法,子类就有权利重写这个方法,子类通过重写父类的 方法可以改变方法的具体行为。 2. 方法重写时一定要保证方法的名字、类型、参数个数和类型同父类的某个方法完全 相同,只有这样,子类继承的这个方法才被隐藏。 3. 子类在重写方法时,不可以将实例方法更改成类方法,也不可以将类方法更改为实 例方法,即如果重写的方法是 static 方法,stati
12、c 关键字必须要保留;如果重写的方 法是实例方法,重写时不可以用 static 修饰该方法。 【学生解答】 (1)程序代码: 【代码 1】public void averageWeight() weight = 65; System. out .println( 中国人平均体重:+ weight+ 公斤); 【代码 2】public void speakHello() System. out .println(How do you do); 【代码 3】public void averageHeight() height = 176; System. out .println(American
13、s average height:+height +cm); 【代码 4】public void averageHeight() height = 172.5; System. out .println(“ 北京人平均身高:+ height + 厘米); 【代码 5 public void averageWeight() weight = 70; System. out .println( 北京人平均体重:+ weight+ 公斤); (2 )运行结果截图: 3.2 成员变量隐藏与 super 关键字 【题2银行与利息】在 Lab4 项目中,编写程序。验证教材第 5 章 81 页的【例 5-7
14、】。 假设银行 Bank 已经有了按整年 year 计算利息的一般方法,其中 year 只能取正整数。 如按整年计算的方法: Double compuerl nterest() in terest = year * 0.35 * savedM on ey; return in terest; 建设银行的天利息计算公式为: day In terst =天数* 0.0001 *存款数 大连银行的天利息计算公式为: daylnterst =天数* 0.00012 *存款数 参照例子中的建设银行或大连银行,再编写一个商业银行,让程序输出 8000 元存 在商业银行 8 年零 236 天的利息。 【知识
15、点】 1. 成员变量隐藏和方法重写; 2. super 关键字。 【实验指导】 1. 当 super 调用被隐藏的方法时,该方法中出现的成员变量是被子类隐藏的成员变量 或继承的成员变量。 2. 子类不继承父类的构造方法,因此,子类在其构造方法中需使用 super 来调用父类 的构造方法,而且 super 必须是子类构造方法中的头一条语句,即如果在在子类的 构造方法中,没有明显地写出 super 关键字来调用父类的某个构造方法,那么默认 有“ super();”。 3. 类中定义多个构造方法时,建议包括一个不带参数的构造方法,以便子类可以省略 “ super(); ”。 【学生解答】 (1 )商
16、业银行的程序代码: class Bank int savedMoney ; int year ; double in terest ; public double computer In terest() interest = year *0.035* savedMoney ; return in terest ; class Bus in essBa nk exte nds Bank double year ; public double computer In terest() super . year = ( int ) year ; double remainNumber = year
17、 - ( int ) year ; int day = ( int )( remai nN umber *1000); interest = super .computerInterest()+ day *0.0001* savedMoney System. out .printf( %d 元存在商业银行d 年零d 天的利息:.2f 元 n , savedMoney , super . year , day , interest ); return in terest ; public class Example5_2 public static void main(String args )
18、 Bus in essBa nk bank1 = new Bus in essBa nk(); bank1 . savedMoney = 8000; bank1 . year = 5.236; double in terest1 = bank1 .computerI nterest(); (2)商业银行的运行结果截图: 田 旨理貝 1 CAA w 3.3 接口 【题 3 歌手大赛与学生体重评估】在 Lab4 项目中,编写程序,要求模拟歌手大赛计算 选手成绩和评估班级学生体重。 歌手大赛计算选手成绩的方法是去掉一个最高分和一个 最低分后再计算平均分,而学校评估一个班级的学生的体重时,是计算全班同
19、学的平均 体重。SongGame 类和 School 类都实现了 ComputerAverage 接口,但实现方式不同。 ComputerAverage 类和 Estimator 主类的部分代码已给出(如下),按下列代码模板要求, 将【代码】部分替换为 Java 程序代码,并写出 SongGame 类和 School 类。 /ComputerAverage.java public interface ComputerAverage / 接口 public double average(double x); /Estimator.java public class Estimator 主类 pu
20、blic static void main(String args) double a = 9.89, 9.88, 9.99, 9.12, 9.69, 9.76, 8.97; double b = 56, 55.5, 65, 50, 51.5, 53.6, 70, 49, 66, 62, 46; ComputerAverage computer; computer = new SongGame(); /computer 调用 average(double x)方法,将数组 a传递给参数 x /【代码 1】 System.out.printf(%n); System.out.printf(歌手最
21、后得分: %5.3fn, result); computer = new School(); /computer 调用 average(double x)方法,将数组 b传递给参数 x /【代码 2】 System.out.printf(” 学生平均体重: %5.2f kg, result); 运行效果如下图。 :益EPU VDRS ktni|iLah4_3 list i nait !*_ j aua C: Misers xdhdiskt Ldh4_3Jaud Esl 1 釉出 Jo 产 全主 1 均体重 1 S*.7 Ke 【知识点】 1. 接口体中只有常量的声明(没有变量)和抽象方法声明。
22、而且接口体中所有的常量 的访冋权限一疋都是 public (允许省略 public、final 修饰符)、所有的抽象方法的访 冋权限一疋都是 public (允许省略 public、abstract 修饰符)。 2. 类实现接口, 以便绑定接口中的方法。 一个类可以实现多个接口, 类通过使用关键 字implements声明自己实现一个或多个接口。如果一个非抽象类实现了某个接口, 那么这个类必须重写的所有方法。 【实验指导】 1. 可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中,那么该 接口变量就可以调用被类实现的接口方法。 2. 接口产生的多态就是指不冋类在实现冋一个接口时可
23、能具有不冋的实现方式。 【学生解答】 (1)程序代码: 【代码 1 】double result = computer.average(a); 【代码 2】result = computer.average(b); / Son gGame.java class SongGame implements ComputerAverage public double average( double x) double min =10, max=-20, sum=0; for (int i = 0; i x. length ; i +) if ( x i = max) max = x i ; sum+=
24、x i ; sum = sum - min - max; sum = ( double )( sum/( x. length -2); return sum; /School.java class School impleme nts ComputerAverage public double average( double x) double sum = 0; for (int i = 0; i J avac: UeaC ha ifFoj*t* L- rfist. J etva s S4Jo:niafi:hJjnsMJoaktoiMab4_4Java MothoL-Faroe aac 【知识
25、点】 掌握面向接口的编程思想: 1. 程序设计时经常会使用接口,因为接口只关心操作,不关心这些操作具体实现的细 节,可以使程序的设计者把主要精力放在程序的设计上, 而不拘泥于细节的实现(细 节留给接口的实现者),即避免设计者把大量的时间和精力花费与具体的算法上。 2. 使用接口进行程序设计的核心技术之一是使用接口回调,即将实现接口的类的对象 的引用放到接口变量中,那么这个接口变量就可以调用类实现的接口方法。 3. 面向接口编程,是指当设计某种重要的类是,不让该类面向具体的类,而是面向接 口,即所设计类中的重要数据是接口声明的变量,而不是具体类声明的对象。 【学生解答】 (1)程序代码: /We
26、atherState.java public in terface WeatherState public void showState(); B s 覆有 -!:-監 一-: :IBIIBI IUIUI I 白像口復 干工TS Q. 明明 / TomorrowMori ng.java class TomorrowMori ng impleme nts WeatherState public void showState() System. out .println( 明天白天:小雨。 ”); / TomorrowNight.java class TomorrowNight impleme n
27、ts WeatherState public void System. showState() out .println( /TodayMori ng.java class TodayMori ng public void System. impleme nts WeatherState showState() out .println( 今天白天:多云,有时阴 ); /TodayNight.java class TodayNight public void System. impleme nts showState() WeatherState out .println( 今天夜间:小雨转大雨 ); class weather WeatherState state void show(WeatherState state .showState(); state ) public class WeatherForeca
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- WB/T 1145-2024农产品产地冷链集配中心基本要求
- 硫酸锌生产工艺与环保处理考核试卷
- 森林改培与生态保护与森林资源合理开发考核试卷
- 玻璃泵阀制造考核试卷
- 空调器湿度传感器的选型与优化考核试卷
- 纸板容器盈利模式分析考核试卷
- 森林资源调查方法与实务操作考核试卷
- 组织领导力发展与绩效改进考核试卷
- 苏州工艺美术职业技术学院《幼儿园课程与教学》2023-2024学年第二学期期末试卷
- 四川省自贡市普高2025年招生全国统一考试仿真卷(七)-高考物理试题仿真试题含解析
- 可编辑修改中国地图模板
- 流体力学(刘鹤年) 全集通用课件
- 小学生常规卫生纪律检查记录表
- 安全观摩手册
- 4.XXX地铁项目图纸问题BIM技术应用交底报告 (1)
- 事业单位1993历次调整工资标准对照表
- 北师大版小学数学三年级下册第四单元测试卷(共5套)
- 止水螺杆施工方案(共14页)
- 关于中节能太阳能科技股份有限公司主要税种纳税情况的专项审核报告
- 教师健康问题及预防ppt课件
- 全膝关节翻修术中骨缺损的治疗进展
评论
0/150
提交评论