实验5继承与接口(二)_第1页
实验5继承与接口(二)_第2页
实验5继承与接口(二)_第3页
实验5继承与接口(二)_第4页
实验5继承与接口(二)_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、 实验5、继承与接口(二)1、 实验目的1. 子类的继承性2. 深入理解类的继承的基本概念及实现。3. 了解Object及对Object类的主要方法equals进行重写。4. 掌握super关键字的作用。5. 掌握抽象类与接口的基本概念及实际应用6. 掌握对象多态性的作用。7. 掌握接口的基本概念及实际应用。8. 掌握接口回调的概念及运行机制。2、 实验内容及步骤1、重写Object类的equals方法 任务一:使用继承自Object类的equals方法进行Person对象的比较操作。 (1)源代码如下: class Person private String name; private in

2、t age; public Person(String name,int age) = name; this.age = age;/getter与setter方法略。 public String toString() return “姓名:”++”;年龄:”+this.age;public class PersonDemo public static void main(String args) Person person1 = new Person(“李兴华”,30); Person person2 = new Person(“李兴华”,30);Syst

3、em.out.println(person1.equals(person2)?”是同一个人。”:”不是同一个人。”);(2)编译并运行应用程序。(3)实验报告将运行结果写在实验报告中。思考:应用程序中person1对象调用的equals方法是从哪个类继承的,请查看源代码,说明此equals方法的作用,即比较的内容。任务二:修改上述源代码Person类,使PersonDemo应用程序执行结果为“同一个人”。2、对象的上转型对象任务一:对象的上转型对象接收任意子类类型的对象 (1)使用Object接收一切的引用类型对象。 源代码: class A public String getInfo() r

4、eturn “Hello World!”; public class ADemo public static void main(String args) Object obj = new A(); System.out.println(obj.getInfo(); System.out.println(obj.toString(); A a = (A)obj; System.out.println(a.getInfo(); System.out.println(a.toString();(2)编译并运行程序。(3)实验报告将运行结果写在实验报告中。如果程序编译为通过,或运行时有错误提示,请说

5、明原因,并将错误改正。任务二:上转型实现多态性(1) 实例学习² 不使用上转型对象实现多态性源代码如下:² 使用上转型对象实现多态性:(2)阅读上述两个源代码,深刻理解使用上转型对象实现多态性机制。编译并运行第二个程序。(3)实验报告将运行结果写在实验报告中。3、抽象类与上转型对象练习任务一:通过对上述实验内容的实践与学习,根据要求填写代码。(1)要求:² 有一个abstract类,类名为Employee;² 该类有一个abstract方法:public abstract double earnings( );;² Employee的子类有Ye

6、arWorker、MontthWorker和WeekWorker。YearWorker对象按年领取薪水,MonthWorker按月领取薪水,WeekWorker按周领取薪水。² 子类必须实现父类的earnings()方法,返回各自领取薪水数。² 有一个Company类,该类用employee数组作为成员,employee数组的单元可以是YearWorker对象的上转型对象、MonthWorker对象的上转型对象或WeekWorker对象的上转型对象。² 程序能输出Company对象一年需要支付的薪水总额。(2)代码模板按模板要求,将代码1-4替换为java程序代码

7、。abstract class Employee public abstract double earnings( );class YearWorker extends Employee 【代码1】 / 实现earnings( )方法class MonthWorker extends Employee 【代码2】 / 实现earnings( )方法class WeekWorker extends Employee 【代码3】 / 实现earnings( )方法class Company Employee employee; double salaries=0; Company(Employee

8、 employee) this.employee=employee; public double salariesPay( ) salaries=0; 【代码4】 / 计算salaries return salaries; public class HardWork public static void main(String args ) Employee employee=new Employee20; for(int i=0;i<employee.length;i+) if(i%3=0) employeei=new WeekWorker( ); else if(i%3=1) emp

9、loyeei=new MonthWorker( ); else if(i%3=2) employeei=new YearWorker( ); Company company=new Company(employee); System.out.println("公司年工资总额:"+ 【代码5】 ); (3)实验报告将代码1-4写在实验报告中。在Employee类的子类中合适位置使用super,再运行程序。根据查看的结果,验证在子类中是否可以调用抽象类父类的构造方法,即抽象类是否有构造方法?4、接口案例学习任务一:学习下面实例,定义一个抽象的汽车类car,再将汽油车设计为接口。

10、该程序代码如下:import java.awt.Color; /汽车抽象类public abstract class Car /公用数据字段声明区 public Color color; /车辆颜色 public int gearNum; /排档数 public String tiretype; /轮胎型号 public float engine; /引擎排气量 /公用抽象方法声明区 public abstract void shiftgear(); /换档 public abstract void brake(); /煞车 public abstract void aircon(); /开冷

11、气 public abstract void headlight(); /开大灯 public interface Gasoline /汽油车接口public static final String FUEL="gasoline(汽油)"/定义一个最终字段 public void refuel(); /声明一个方法任务二:(1)根据以上代码,定义你自己的车,该车继承自汽车类car并实现汽油车接口。自己的车属性为:档位为5个档,轮胎型号是BridgeStone185ST,排气量为1598.5。自己的车的新增的方法有:equipment():输出轿车颜色、轿车排档数、轿车轮胎型

12、号、轿车排气量和轿车燃料。(2)实验报告将任务二的代码写在实验报告中。编写应用程序测试实现类。(3)注意:在实现接口时,要实现所有接口中定义的所有方法,方法的实现可以具有具体的实现内容,也可以是抽象的方法,即只有方法名或参数,没有变量、没有具体操作语句,只有一对大括号的空方法。5、接口的回调任务:按要求填写代码。(1) 要求:² 有一个ComputeTotalSales接口,该接口中有一个方法:public double totalSalesBy Year();² 有三个实现该接口的类:Television,Computer和Mobile。这三个类通过实现接口compute

13、TotalSales给出自己的年销售额。² 有一个Shop类,该类用computeTotalSales数组作为成员,computeTotalSales数组的单元可以存放Television对象的引用或Mobile对象的引用。² 编写应用程序输出Shop对象的年销售额。(2)代码模板按模板要求,将代码1-4替换为java程序代码interface ComputeTotalSales public double totalSalesByYear( );class Television implements ComputeTotalSales 【代码1】 / 实现totalSal

14、esByYear( )方法class Compute implements ComputeTotalSales 【代码2】 / 实现totalSalesByYear( )方法class Mobile implements ComputeTotalSales 【代码3】 / 实现totalSalesByYear( )方法class Shop ComputeTotalSales goods; double totalSales=0; Shop(ComputeTotalSales goods) this.goods=goods; public double giveTotalSales( ) totalSales=0; 【代码4】 / 计算totalSales return totalSales; public class HappySale public static void main(String args ) ComputeTotalSales goods=new ComputeTotalSales50; for(int i

温馨提示

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

评论

0/150

提交评论