Java程序设计-多态与接口
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java程序设计
实验四:继承、多态与接口
1.提交期限和方法
期限:第12周周五(2015-11-27)23:59 pm
方法:由学习委员收集所有学生的实验报告,以电子档的形式提交给任课教师(发邮箱:9867941@)。
2.实验目的及要求
掌握Java的基本数据类型、运算符、表达式和语句。
运行环境:JDK1.7
开发环境:Eclipse
3.实验内容及题目
3.1子类的继承与方法的重写
【题1 中国人与美国人】在Eclipse 中创建名为Lab4的新项目,编写程序模拟中国人、美国人、北京人。除主类外,程序中有4个类:People、ChinaPeople、AmericanPeople 和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 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( )方法。要求BeijingPeople重写父类的public void speakHello( )、public void averageHeight( )和public void averageWeight( )方法。
运行效果如下图。按下列代码模板要求,将【代码】部分替换为Java程序代码。
【思考题(选做)】
People类中的public void speakHello( ), public void averageHeight( ), public void averageWeight( )三个方法的方法体中的语句是否可以省略?
【答:】可以省略.
【题2 银行与利息】在Lab4项目中,编写程序。验证教材第5章81页的【例5-7】。
假设银行Bank已经有了按整年year计算利息的一般方法,其中year只能取正整数。如按整年计算的方法:
Double compuerInterest(){
interest = year * 0.35 * savedMoney;
return interest;
}
建设银行的天利息计算公式为:dayInterst = 天数* 0.0001 * 存款数
大连银行的天利息计算公式为:dayInterst = 天数* 0.00012 * 存款数
参照例子中的建设银行或大连银行,再编写一个商业银行,让程序输出8000元存在商业银行8年零236天的利息。
【知识点】
1.成员变量隐藏和方法重写;
2.super关键字。
【实验指导】
1.当super调用被隐藏的方法时,该方法中出现的成员变量是被子类隐藏的成员变量
或继承的成员变量。
【题3 歌手大赛与学生体重评估】在Lab4项目中,编写程序,要求模拟歌手大赛计算选手成绩和评估班级学生体重。歌手大赛计算选手成绩的方法是去掉一个最高分和一个最低分后再计算平均分,而学校评估一个班级的学生的体重时,是计算全班同学的平均体重。SongGame类和School类都实现了ComputerAverage接口,但实现方式不同。ComputerAverage类和Estimator主类的部分代码已给出(如下),按下列代码模板要求,将【代码】部分替换为Java程序代码,并写出SongGame类和School类。
//ComputerAverage.java
public interface ComputerAverage{ //接口
public double average(double x[]);
}
//Estimator.java
public class Estimator { //主类
public 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("歌手最后得分:%5.3f\n", result);
computer = new School();