Java程序设计课件:单元07 类的多态_第1页
Java程序设计课件:单元07 类的多态_第2页
Java程序设计课件:单元07 类的多态_第3页
Java程序设计课件:单元07 类的多态_第4页
Java程序设计课件:单元07 类的多态_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1、员工类多态程序设计单元07 类的多态单元目标u 掌握继承关系下方法的覆盖;u 理解多态的含义;u 掌握最终类和抽象类的概念和实现方式。学习任务任务描述公司中含有三类员工分别是雇员、行政人员和经理。由于类别不同对于三类员工分别使用类进行标示。要求雇员包含:属性有姓名和工号;行为有工作和加班。行政人员包含:属性有姓名、工号和职务;行为有工作和管理。经理包含:属性有姓名、工号、职务和部门;行为有工作和外交。使用继承技术实现公司员工的信息管理,使用多态特性通过统一的方法显示不同类型员工的信息。运行结果员工多态程序设计知识准备7.1多态的概念多态字面意思代表“多种状态”。前面通过对继承的讲解,父类可以被

2、多个子类继承,那么在面向对象思想中“态”是指 “子类和父类”两种状态,而一个父类可以拥有多个子类,那么子类和父类总起来就可以成为多态。例如父类记作A,有子类a1和a2。那么A a=new a1( ); A a=new a2( );这两个语句是对的,同时A a=new A( )。那么可以看出对于父类A的声明 a它可以等于(具备)三个new出来的对象(状态)。我们称这种现象为对多态。在讲解多态的正式概念前,我们还必须复习前面讲过的一个概念“重写”。“重写”是指父类中的方法在被子类继承过去后,子类可以重新实现方法体内容,这样子类和父类中就存在了一个名字相同的但实现不同的方法。假设上一段例子中父类A中

3、有一个public权限的方法method( ),同时子类a1和a2对该方法进行重写。那么上段中的三个语句所产生的对象a分别去调用method( )方法,结果第一句A a=new a1( );是调用子类a1中的method( ),第二句则调用子类a2中的method( ),第三句则调用父类A的method( )。在面向对象的程序设计中,需要利用这样的“重名”现象来提高程序的抽象度和简洁性。正式定义为:多态是指Java的运行时多态性,它是面向对象程序设计中代码重用的最强大机制,Java实现多态的基础是动态方法调度,就是指父类某个方法被其子类重写时,可以各自产生自己的功能行为。【注 意】多态概念在很

4、多书中分为运行时多态和静态多态。静态多态可简单理解为方法重载。实际上在程序编写时动态多态的用法更为广泛和有效。7.2多态的用法多态的用法一般可以归结为2种:一种用法是使用父类声明的数组存储子类的对象;另一种用法是使用父类的声明作为方法的形参,子类对象作为实参传入。【实例7-1】员工管理系统中,员工分为普通员工(CommEmp)、管理人员(Manager)和人力资源(HR)。要求HR对所有员工进行评测,即打印员工的信息。父类Employee由普通员工和管理员工总结抽象出来。员工多态程序设计public class Employee public String name;public Employ

5、ee(String name) = name;public void showInfo()子类CommEmp继承父类Employee,重写了父类的showInfo方法。public class CommEmp extends Employeepublic String workStation;public CommEmp(String name,String workStation) super(name);this.workStation = workStation;public void showInfo()/重写父类的方法System.out.println(&quo

6、t;我是"++"工作岗位是"+this.workStation);子类Manager继承父类Employee,重写了父类的showInfo方法。员工多态程序设计public class Manager extends Employee public String dep;public Manager(String name,String dep) super(name);this.dep = dep;public void showInfo() /重写父类的方法System.out.println("我是"+

7、+"管理的部门是"+this.dep);类HR的judge方法使用父类Employee(数组)作为形式参数。public class HRpublic void judge(Employee emp)/使用父类作为方法的形参for(int i=0;i<emp.length;i+)empi.showInfo();/形式上调用父类方法,实际会根据传入对象来调用员工多态程序设计测试类Main中使用父类数组盛放子类对象,HR的对象调用方法传入子类对象。public class Main public static void main(String args) Employee

8、 emp=new Employee3;/声明父类数组emp0=new CommEmp("普通员工-张三", "修理工");/数组中填充子类对象emp1=new Manager("管理者-李四", "财务处");HR hr=new HR();hr.judge(emp);员工多态程序设计任务实施1实施思路员工类、行政人员类、经理类有许多相同的语句代码。在属性方面,都包含了年龄、性别等重复的信息定义。换个思路,员工是一般性的概念,在定义类时,将经理类、行政类中相同的属性和方法抽象出来,集中放在员工类中,形成一种共享的机制

9、,经理类、行政类中只放自己特有的成员变量和成员方法,减少重复代码。这样的员工类称为父类,行政人员类、经理类称为子类。子类继承父类的非私有成员变量和成员方法。u 打开Eclipse,包中定义员工类;u 在员工类中只定义共有的成员变量,定义类的构造方法,定义共有的方法;u 定义行政类,经理类,只定义自己特有属性和方法,父类已有的成员变量和成员方法不再定义;u 编写测试类,分别声明对象进行调用。2程序代码员工多态程序设计public class employee / 员工类/ 省略编号姓名工资/ 省略setXxx()、getXxx()public void Employee() / 构造函数ID =

10、 0; = ""this.salary = 0.0;public void print() public class administration extends employee / 行政人员double fare;public administration() this.fare = 0.0;/ 省略getFare()、setFare(double fare)public void print()public class manager extends administration / 主管double bonus;public manager() t

11、his.bonus = 0.0;/ 省略getBonus()、setBonus(double bonus)public void print()public class WorkMain public static void main(String args) employee employee1 = new employee();employee1.setID(2009);employee1.setName("zhangsan");employee1.setSalary(3500.00);System.out.println("雇员信息:");empl

12、oyee1.print();administration xingzheng1 = new administration();xingzheng1.setID(2010);xingzheng1.setName("lisi");xingzheng1.setSalary(4000.00);System.out.println("行政人员信息:");xingzheng1.print();manager manager1 = new manager();manager1.setID(2011);manager1.setName("wangwu"

13、;);manager1.setSalary(6000.00);manager1.setBonus(2000.00);System.out.println("经理信息:");manager1.print();任务拓展任何类的父类都是Object,根据多态的概念,任何子类的对象都可以赋值给父类的引用。也就是说任何类的所有势力都可以用Object来代替。例如:Object obj=”String”; 由于整数、字符型等基本数据类型不属于对象类型(引用类型),所以不能使用Object来指向这些基本数据类型。但可以通过基本数据类型的对象包装器进行转换后也可以使用Object来指向。例如:Object obj=new Integer(1);Object可以代表所有的对象,这种思想对于通用编程时非常有用的。例如在Arrays类中有个静态方法

温馨提示

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

评论

0/150

提交评论