多态在现实世界中比比皆是。从描述人的性格和行为的“多面人”、“多面手”,到具有综合功能的产品“三合一”、“四合一”,都指多态性特征。多态使我们的世界更绚丽多彩。计算机的应用应该是多态的典型实例。
一、多态的概念 所谓多态是指根据引用对象类型的不同,当不同的引用对象调用同一个方法时,会产生不同的行为。举一个例子来说,例如一个软件公司的软件开发小组由项目经理、项目组长、软件开发工程师等人员组成,上班时只要发出开始工作的指令,那么项目经理就会去做有关项目整体设计和与客户沟通的工作,项目组成会负责检查模块代码的工作,软件开发工程师会负责代码编写的工作。只要项目组开始工作了,那么项目组中的每一个员工就都会完成自己的本职工作。这里项目经理、项目组长、软件开发工程师可以看作是一个个对象,发出开始工作的指令可以看作是一个方法的调用。
从程序设计的角度来看,当项目经理、项目组长、软件开发工程师这些对象接收到开始工作这个方法调用的时候,不同的对象对这个方法调用会有不同的行为。方法的重载和方法的重写就是多态的两种表现形式。重载是相对于一个类中的方法而言,类中的这些方法需要有相同的方法名和不同的参数列表,它可以认为是单个类中多态性的一种表现。方法的重写是相对于继承中子类和父类之间的方法而言,子类可以重写父类中的方法,子类中方法的返回值类型、方法名、参数个数以及参数类型要与父类中继承的方法完相同,这可以认为是子类和父类间多态性的一种表现。再例如,如果要计算几何物体表面积和体积。如何在程序中有效地计算众多不同几何体的表面积computeArea()?其实这是解释多态性经典的例子。计算表面积的方法,如computeArea(),包括其他类似的方法,如computeVolume(),draw(),等等,都可应用多态来解决。因为这些方法都可以针对不同的几何体,进行运算和操作。即:形态不一、方法相同、内容多样。
二、多态的好处 由上面的举例,可以知道多态给我们带来了好处,可以归纳为以下几点:
1.可替换性。多态对已存在的代码具有可替换性。
2.可扩充性。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。
3.接口性。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。
4.灵活性。它在应用中体现了灵活多样的操作,提高了使用效率。
5.简化性。多态简化了对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。值得注意的是,多态并不能够解决提高执行速度的问题,因为它基于动态装载和地址引用,或称动态绑定。
三、多态在软件开发中的应用多态是基于继承的。下面以一个软件开发项目的小组为例,来看一下在类的继承中如何实现多态。无论是项目经理、项目组长还是软件开发工程师,他们都是公司的员工,所以先定义一个员工类Employee,作为他们的父类。在该类中定义一个构造方法和一个表示员工工作的方法work。该构造方法有一个String类型的参数表示员工的职位以区分项目组成员。
下面来总结一下,在使用类的继承实现多态时有以下几个地方是需要注意的:在实现多态时,要通过父类的变量来完成对子类对象方法的调用。被调用的方法必须是父类中存在并且在子类中被重写的方法。父类变量可以引用子类的不同类型的对象,但不能用该变量访问子类中新添加的属性和方法。
四、多态使Java编程语言的灵活性、可扩展性、代码的复用性得以实现。深入理解多态的概念,有助于正确使用多态,设计出更加高效、灵活、健壮的Java编程程序。
本文标题:动态性语言在Java编程中的运用,责任编辑:宏鹏,来源:武汉北大青鸟鲁广校区栏目,于2012-10-13 09:57:45发布于北大青鸟鲁广校区。多态性是面向对象编程三个重要特征之一。方法的重载和方法的重写都是 Java 编程多态性的一种表现。多态在Java编程的实际应用中经常会用到,所以学习Java编程语言就有必要了解多态。
预约将免费领取7天课程体验卡
只为您方便就学
专业老师24小时1对1学习指导
定制专属于你的专属学习方案
微信号:17740513250
微信号:17740513250