实验5 继承与接口(二)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验5、继承与接口(二)

一、实验目的

1.子类的继承性

2.深入理解类的继承的基本概念及实现。

3.了解Object及对Object类的主要方法equals进行重写。

4.掌握super关键字的作用。

5.掌握抽象类与接口的基本概念及实际应用

6.掌握对象多态性的作用。

7.掌握接口的基本概念及实际应用。

8.掌握接口回调的概念及运行机制。

二、实验内容及步骤

1、重写Object类的equals方法

任务一:使用继承自Object类的equals方法进行Person对象的比较操作。

(1)源代码如下:

class Person{

private String name;

private int 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);

System.out.println(person1.equals(person2)?”是同一个人。”

:”不是同一个人。”);

}

}

(2)编译并运行应用程序。

(3)实验报告

将运行结果写在实验报告中。

思考:应用程序中person1对象调用的equals方法是从哪个类继承的,请查看源代码,说明此equals方法的作用,即比较的内容。

任务二:修改上述源代码Person类,使PersonDemo应用程序执行结果为“同一个人”。

2、对象的上转型对象

任务一:对象的上转型对象接收任意子类类型的对象

(1)使用Object接收一切的引用类型对象。

源代码:

class A{

public String getInfo(){

return “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)实验报告

将运行结果写在实验报告中。

如果程序编译为通过,或运行时有错误提示,请说明原因,并将错误改正。任务二:上转型实现多态性

(1)实例学习

不使用上转型对象实现多态性源代码如下:

使用上转型对象实现多态性:

(2)阅读上述两个源代码,深刻理解使用上转型对象实现多态性机制。

编译并运行第二个程序。

(3)实验报告

将运行结果写在实验报告中。

3、抽象类与上转型对象练习

任务一:通过对上述实验内容的实践与学习,根据要求填写代码。

(1)要求:

✧有一个abstract类,类名为Employee;

✧该类有一个abstract方法:

public abstract double earnings( );;

✧Employee的子类有YearWorker、MontthWorker和WeekWorker。

YearWorker对象按年领取薪水,MonthWorker按月领取薪水,WeekWorker 按周领取薪水。

✧子类必须实现父类的earnings()方法,返回各自领取薪水数。

✧有一个Company类,该类用employee数组作为成员,employee数组的

单元可以是YearWorker对象的上转型对象、MonthWorker对象的上转型对象或WeekWorker对象的上转型对象。

✧程序能输出Company对象一年需要支付的薪水总额。

(2)代码模板

按模板要求,将代码1-4替换为java程序代码。

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[ ] 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 Employee[20];

for(int i=0;i

{

if(i%3==0)

employee[i]=new WeekWorker( );

else if(i%3==1)

employee[i]=new MonthWorker( );

相关文档
最新文档