实验五 继承与接口
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(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励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)在三种水果的构造方法中打印一句话. 以苹果类为例
class apple { public apple() { System.out.println(“创建了一个苹果类的对象”); } }
(3)类图如下:
<<接口>>FruitApplePearOrangesGardener+create() : Fruit
(4)要求从控制台输入一个字符串,根据字符串的值来判断创建三种水果中哪个类的对象。
运行结果如图:
3. 实验步骤
实验一、1
实验一、2
实验一、3
实验一、4
实验一、5
实验二、1
package SFirst;
public class Bank {
int savedMoney; int year; double interest;
double interestRate=0.29;
public double computerInterest(){ }
public void setInterestRate(double rate) {
interest=year*interestRate*savedMoney; return interest;
}
}
interestRate = rate;
package SFirst;
public class GuangFaBank extends Bank{ }
package SFirst;
public class SaveMoney { }
public static void main(String[] args) { }
int amount=8000;
GuangFaBank bank1=new GuangFaBank(); bank1.savedMoney=amount; bank1.year=8.212;
bank1.setInterestRate(0.035);
double interest1=bank1.computerInterest();
System.out.println(\元在广发行8年零212天的利息为:\+interest1); double year;
public double computerInterest(){ }
super.year=(int)year; double r=year-(int)year; int day=(int)(r*1000);
double yearInterest=super.computerInterest();//【代码1】//super调用隐double dayInterest=day*0.0001*savedMoney; interest=yearInterest+dayInterest; return interest;
藏的computerInterest()方法
实验结果
实验二、2
package SSecond;
public abstract class Geometry {