快速业务通道

Java编程那些事儿63—多态性 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24
,而只是在名义上的类型(语法上的类型)是SuperClass类型的,这样将方便程序的控制,当增加新的子类类型时,已有的代码不需要进行改造就可以自动适应新的子类的结构。

例如新增了一个SuperClass的子类SubbClass3,则该数组的代码可以修改成如下:

SuperClass sc[] = new SuperClass[3];

sc[0] = new SubbClass1();

sc[1] = new SubbClass2();

sc[2] = new SubbClass3();

其它的代码都需要进行修改,就可以适应新的结构,这是多态性最主要的用途。

Java编程那些事儿63—多态性(3)

时间:2010-03-11 csdn 陈跃峰

2.对象的传递

在方法的传入参数传递,以及返回值处理方面都从对象类型的多态中受益。在向方法中传入参数时,如果该方法需要处理各个子类的对象,则只需要书写一个接受父类类型对象的方法即可。例如:

public void testObjectTypeMethod(SuperClass sc){}

则该在调用该方法时,可以传入SuperClass的对象,也可以传入其子类的对象,如果传入的是子类的对象,则子类对象中的内容不会丢失。例如调用的示例代码如下:

SuperClass sc = new SuperClass();

SubbClass1 sc1 = new SubbClass1();

SubbClass2 sc2 = new SubbClass2();

testObjectTypeMethod(sc);

testObjectTypeMethod(sc1);

testObjectTypeMethod(sc2);

这里说明的只是调用时的语法结构,这样的特性将使我们只需要书写一个方法,就可以处理所有子类的对象,简化代码的书写,降低代码的重复,从而降低维护的难度。

另外,方法的返回值也可以利用到该特性,例如如下方法:

public SuperClass testObjectTypeMethod2(){}

则在该方法的内部,既可以返回SuperClass类型的对象,也可以返回其子类的对象,也能简化代码的书写,便于代码的阅读和维护。

关于对象类型的多态,就简单的说明这么多,具体在项目中如何进行使用,还需要一定的技巧和方法。

8.5.3.2 对象方法的多态

对象方法的多态基于方法的覆盖,也就是该对象调用的方法具体是子类的方法还是父类的方法,由创建对象时使用的构造方法决定,而不是由声明对象时声明的类型决定。

示例代码如下:

/** * 测试对象方法的多态 */ public class TestObjectMethod {  public static void main(String[] args) {   SuperClass sc = new SuperClass();   SubbClass1 sc1 = new SubbClass1();   SubbClass2 sc2 = new SubbClass2();   SuperClass sc3 = new SubbClass1();   testObjectTypeMethod(sc);   testObjectTypeMethod(sc1);   testObjectTypeMethod(sc2);   testObjectTypeMethod(sc3);  }  public static void testObjectTypeMethod(SuperClass sc){   sc.test(); //调用被覆盖的方法  } }

该代码的执行结果如下:

SuperClassSubbClass1

SubbClass2

SubbClass1

则从代码的执行结果看,虽然testObjectTypeMethod方法接收的是SuperClass类型的对象,但是传入子类对象时,子类对象的内容没有丢失,所以在调用test方法时,还是调用的对应对象中对应的test方法。

这样就在功能上实现了对象的传递,从而保留了对象的内容,极大的方便了代码的扩展性。

但是,由于Java在执行程序时,在程序运行的过程中,需要判断对象调用的具体是父类的方法还是子类的方法,所以程序的执行速度会稍微有所降低。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号