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

下载本文档

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

文档简介

实验五 继承与接口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 applepublic apple()System.out.println(“创建了一个苹果类的对象”);(3)类图如下:(4)要求从控制台输入一个字符串,根据字符串的值来判断创建三种水果中哪个类的对象。运行结果如图:3. 实验步骤实验一、1实验一、2实验一、3实验一、4实验一、5实验二、1package SFirst;public class Bank int savedMoney;int year;double interest;double interestRate=0.29;public double computerInterest()interest=year*interestRate*savedMoney;return interest;public void setInterestRate(double rate) interestRate = rate;package SFirst;public class GuangFaBank extends Bankdouble year;public double computerInterest()super.year=(int)year;double r=year-(int)year;int day=(int)(r*1000);double yearInterest=puterInterest();/【代码1】/super调用隐藏的computerInterest()方法double dayInterest=day*0.0001*savedMoney;interest=yearInterest+dayInterest;return interest;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=puterInterest();System.out.println(8000元在广发行8年零212天的利息为:+interest1);实验结果实验二、2package SSecond;public abstract class Geometry public abstract double getArea();package SSecond;public class MainClass public static void main(String args) Trapezoid tuxing=new Trapezoid(4.7,7.9,7);/有29个Geometry对象double s=tuxing.getArea();System.out.printf(梯形的面积为:n%f,s);package SSecond;public class Trapezoid extends Geometrydouble a,b,h;Trapezoid(double a,double b,double h)this.a=a;this.b=b;this.h=h;/【代码2】/重写getArea()方法Overridepublic double getArea() / TODO Auto-generated method stubreturn (a+b)*h/2;实验结果实验二、3package SThird;public class BoiledState implements WaterStateOverridepublic void showState() / TODO Auto-generated method stubSystem.out.println(开水。);/【代码3】/重写public void showState()方法package SThird;public class IceState implements WaterStatepublic void showState()System.out.print(结冰。);package SThird;public class LittleWarmState implements WaterState/【代码1】/重写public void showState()方法Overridepublic void showState() / TODO Auto-generated method stubSystem.out.println(微凉。);package SThird;public class WarmState implements WaterStateOverridepublic void showState() / TODO Auto-generated method stubSystem.out.println(温水。);/【代码2】/重写public void showState()方法package SThird;public class Water WaterState state;public void show()state.showState();public void setState(WaterState s)state=s;package SThird;public class WaterForecast public static void main(String args) Water waterState=new Water();System.out.print(n温度在90-100时水杯水的状态:);waterState.setState(new BoiledState();waterState.show();System.out.print(n温度在50-80时水杯水的状态:);waterState.setState(new WarmState();waterState.show();System.out.print(n温度在30-50时水杯水的状态:);waterState.setState(new LittleWarmState();waterState.show();System.out.print(n温度在0度下时水杯水的状态:);waterState.setState(new IceState();waterState.show();package SThird;public interface WaterState public void showState();实验结果实验四package SForth;public class A implements object public int f(int a, int b) int sum=0,temp=1;for(int i=a;i=b;i=i+2)for(int j=1;j=i;j+)temp*=j;sum+=temp;temp=1;return sum;package SForth;public class B implements object public int f(int a, int b) int sum=0,temp=1;for(int i=a;i=b;i=i+2)for(int j=1;j=i;j+)temp*=j;sum+=temp;temp=1;return sum;package SForth;public interface object int f(int a,int b);package SForth;public class Test public static void main(String args) / TODO Auto-generated method stubA a=new A();B b=new B();int sum1=a.f(1, 9);int sum2=b.f(2, 10);System.out.println(1!+3!+5!+9!的结果为:+sum1);System.out.println(2!+4!+6!+10!的结果为:+sum2);实验结果实验五package SFifth;public class Car extends Vehicle int loader;public Car(String brand, String color, double speed,int l) super(brand, color, speed);this.loader=l;/ TODO Auto-generated constructor stubpublic void run()System.out.println(颜色为+super.getColor()+的+super.getBrand()+汽车的时速为:+super.getSpeed();package SFifth;public class Test public static void main(String args) / TODO Auto-generated method stubCar c=new Car(Honda,red,300.0,20);c.run();package SFifth;public class Vehicle private String brand=BMW;/汽车品牌private String color=red;/汽车颜色private double speed=0;/汽车时速public String getColor() return color;public void setColor(String color) this.color = color;public double getSpeed() return speed;public void setSpeed(double speed) this.speed = speed;public String getBrand() return brand;public Vehicle(String brand, String color, double speed) / TODO Auto-generated constructor stubthis.brand=brand;this.color=color;this.speed=speed;public void run() System.out.println(brand+汽车的时速为:+speed);package SFifth;public class VehicleTest public static void main(String args) / TODO Auto-generated method stubVehicle v=new Vehicle(benz,black,200.0);v.run();实验结果实验六package SSixth;public class ColaEmployee String name;/员工姓名int month;/员工生日月份public String getName() return name;public void setName(String name) = name;public int getMonth() return month;public void setMonth(int month) this.month = month;int getSalary(int month) if (month = this.month) return 100; else return 0; package SSixth;public class Company extends ColaEmployeevoid print(String name, double salary,int month)String Name=name;double Salary=salary;int Month=month;System.out.println(员工+Name+在+Month+月+的薪资为:+Salary);package SSixth;public class HourlyEmployee extends ColaEmployee double hours;/每月工作的时间double hsalary;/每小时的工资Company c=new Company();public HourlyEmployee(String name,int month, double hours, double hsalary) / TODO Auto-generated constructor stubthis.hours=hours;this.hsalary=hsalary;this.month=month;=name;public double getHours() return hours;public void setHours(double hours) this.hours = hours;public double getHsalary() return hsalary;public void setHsalary(double hsalary) this.hsalary = hsalary;public int getSalary(int month)if(this.hours=160)this.hsalary=this.hsalary*this.hours+super.getSalary(month);c.print(name,hsalary,month);return 0;else this.hsalary=(this.hours-160)*this.hsalary*1.5+160*this.hsalary+super.getSalary(month);c.print(name,hsalary,month);return 0;package SSixth;public class SalariedEmployee extends ColaEmployee double salary;/员工固定薪资(按月)Company c=new Company();public SalariedEmployee(String name, int month, double salary) / TODO Auto-generated constructor =name;this.month=month;this.salary=salary;public int getSalary(int month) this.salary=salary + super.getSalary(month); c.print(name,salary,month);return 0; package SSixth;public class SalesEmployee extends ColaEmployeedouble money;/月销售额double ticheng;/提成率Company c=new Company();public SalesEmployee(String name, int month, double money, double ticheng) / TODO Auto-generated constructor stubthis.money=money;this.month=month;=name;this.ticheng=ticheng;public double getMoney() return money;public void setMoney(double money) this.money = money;public double getTicheng() return ticheng;public void setTicheng(double ticheng) this.ticheng = ticheng;public int getSalary(int month) this.money= money + super.getSalary(month)+(money*ticheng); c.print(name,money,month); return 0; package SSixth;public class SalesEmployee extends ColaEmployeedouble money;/月销售额double ticheng;/提成率Company c=new Company();public SalesEmployee(String name, int month, double money, double ticheng) / TODO Auto-generated constructor stubthis.money=money;this.month=month;=name;this.ticheng=ticheng;public double getMoney() return money;public void setMoney(double money) this.money = money;public double getTicheng() return ticheng;public void setTicheng(double ticheng) this.ticheng = ticheng;public int getSalary(int month) this.money= money + super.getSalary(month)+(money*ticheng); c.print(name,money,month); return 0; package SSixth;public class TestCompany public static void main(String args) / TODO Auto-generated method stubColaEmployee ce =new ColaEmployee3;ce0=new SalariedEmployee(aa,9,3000.0);ce1=new HourlyEmployee(bb,3,2000.0,180);ce2=new SalesEmployee(cc,6,6000,0.3);ce0.getSalary(2);ce1.getSalary(2);ce2.getSalary(2);实验结果实验七package SSeventh;public class apple implements Fruit public void apple() / TODO Auto-generated method stubSystem.out.println(创建了一个苹果类的对象);Overridepublic void banana() / TODO Auto-generated method stubOverridepublic void pear() / TODO Auto-generated method stubpackage SSeventh;public class banana implements Fruit public void banana() / TODO Auto-generated method stubSystem.out.println(创建了一个香蕉类的对象);Overridepublic void apple() / TODO Auto-generated method stubOverridepublic void pear() / TODO Auto-generated method stubpackage SSeventh;public interface Fruit void apple(); void banana(); void pear();package SSeventh;public class pear implements Fruit public void pear() / TODO Auto-generated method stubSystem.out.println(创建了一个梨子类的对象);Overridepublic void apple() / TODO Auto-generated method stubOverridepublic void banana() / TODO Auto-generated method stubpackage SSeventh;import java.util.Scanner;public class Test public static void main(String args) / TODO Auto-generated method stub/Fruit f=new banana();Scanner input=new Scanner(System.in);System.out.println(请输入您要创建的类:);String attr=input.nextLine();if(attr.equals(banana)Fruit fruit=new banana();fruit.banana();else if(attr.equals(apple)Fruit fruit = new apple();fruit.apple();else if(attr.equals(pear)Fruit fruit =new pear();fruit.pear();else System.out.println(输入有误!);实验结果4. 评分标准1. A内容功能完善,编程风格好,人机接口界面好; 2. B内容功能完善,编程风格良好,人机接口界面良好;3. C完成必做内容;4. D能完成必做内容;5. E未按时完成必做内容,或者抄袭(雷同者全部为E).参照书上实验按模版要求,将【代码】替换为Java程序代码,编写好完整的程序文档,最后运行得到的相关文件,把实验所得文件一起打包上交。(压缩包的文件名为:学号后三位和名字开头字母,如109zhhRAR|ZIP)附录:实验1 中国人与美国人模板代码 People.javapublic 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(average weight:+weight);ChinaPeople.javapublic class ChinaPeople extends Peoplepublic void speakHello()System.out.println(你好);public void averageHeight()height=168.78;System.out.println(中国人的平均身高:+height+厘米);/【代码1】/重写public void averageWeight()方法,输出:中国人的平均体重:65公斤public void chinaGongfu()System.out.println(坐如钟,站如松,睡如弓);AmericanPeople.javapublic class AmericanPeople extends People/【代码2】/重写public void speakHello()方法,输出:How do you do/【代码3】/重写public void averageHeight()方法,输出:Americans average height:176cmpublic void averageWeight()weight=75;System.out.println(Americans average weight:+weight+kg);public void americanBoxing()System.out.println(直拳、钩拳、组合拳);BeijingPeople.javapublic class BeijingPeople extends ChinaPeople/【代码4】/重写public void averageHeight()方法,输出:北京人的平均身高:172.5厘米/【代码5】/重写public void averageWeight()方法,输出:北京人的平均体重:70公斤public void beijingOpera()System.out.println(花脸、青衣、花旦和老生);Example.javapublic class Example public static void main(String args) ChinaPeople chinaPeople = new ChinaPeople();AmericanPeople americanPeople = new AmericanPeople();BeijingPeople beijingPeople = new BeijingPeople();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.javapublic class Bank int savedMoney;int year;double interest;double interestRate=0.29;public double computerInterest()interest=year*interestRate*savedMoney;return interest;public void setInterestRate(double rate) interestRate = rate;ConstructionBank.javapublic class ConstructionBank extends Bankdouble year;public double computerInterest()super.year=(int)year;double r=year-(int)year;int day=(int)(r*1000);double yearInterest=/【代码1】/super调用隐藏的computerInterest()方法double dayInterest=day*0.0001*savedMoney;interest=yearInterest+dayInterest;System.out.printf(%d元存在建设银行%d年零%d天的利息:%f元n,savedMoney,super.year,day,interest);return interest;BankOfDalian.javapublic class BankOfDalian extends Bankdouble year;public double computerInterest()super.year=(int)year;double r=year-(int)year;int day=(int)(r*1000);double yearInterest=/【代码2】/super调用隐藏的computerInterest()方法double dayInterest=day*0.00012*savedMoney;interest=yearInterest+dayInterest;System.out.printf(%d元存在大连银行%d年零%d天的利息:%f元n,savedMoney,super.year,day,interest);return interest;SaveMoney.javapublic class SaveMoney public static void main(String args) int amount=8000;ConstructionBank bank1=new ConstructionBank();bank1.savedMoney=amount;bank1.year=8.236;bank1.setInterestRate(0.035);double interest1=puterInterest();BankOfDalian bank2=new BankOfDalian();bank2.savedMoney=amount;bank2.year=8.236;bank2.setInterestRate(0.035);double interest2=puterInterest();System.out.printf(两个银行利息相差%f元n,interest2-interest1);实验3 面积之和模板代码 Geometry.javapublic abstract class Geometry public abstract double getArea();TotalArea.javapublic class TotalArea Geometry tuxing;double totalArea=0;public void setTuxing(Geometry t)tuxing=t;public double computerTatalArea()/【代码3】/用循环语句让tuxing的元素调用getArea方法,并将返回的值累加到totalAreareturn totalArea;Rect.javapublic class Rect extends Geometrydouble a,b;Re

温馨提示

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

评论

0/150

提交评论