理论教育 Java面向对象程序设计:多态性在消息传递中的表现

Java面向对象程序设计:多态性在消息传递中的表现

时间:2023-11-25 理论教育 版权反馈
【摘要】:图4.2电话机的多态性多态性还表现在对象之间的消息传递,也就是说,同一消息为不同的对象接收时可以产生完全不同的行动。图4.3消息传递继承的表现就是多态。例4.1:一个自我介绍的方法,介绍自己是男人还是女人,以刘德华和蔡依林为例。交通工具都有驾驶的方法,虽然继承自交通工具的汽车和火车也同样具有驾驶的方法,但是它们具体驾驶的方法不尽相同,如例4.2 所示。例4.2:Java 中没有多继承,而用接口实现了多继承。

Java面向对象程序设计:多态性在消息传递中的表现

俗话说“龙生九子,各不相同”,这可以作为类的多态性的一个比喻。例如,电话厂家都是通过模具来生产电话机的,模具就是一个类,而由该模具生产出来的电话机有千千万万,内部构造一样(继承了模具类),但颜色可以有很多种(多态性),如图4.2 所示。

图4.2 电话机的多态性

多态性还表现在对象之间的消息传递,也就是说,同一消息为不同的对象接收时可以产生完全不同的行动。例如在图4.3 中,用户单击打印按钮、退出按钮,操作相同(单击),接收对象不同(打印按钮、退出按钮),响应的动作不同:一个是打印文档,一个是关闭应用程序。利用多态性,就可以发送一个通用的信息,如单击鼠标,而将所有的实现细节都留给接收消息的对象自行决定,如打印按钮对象实现打印、退出按钮负责退出应用程序。当然,用户并不需要关心接收消息按钮的内部实现细节,因为这些细节已经被封装了。

图4.3 消息传递

继承的表现就是多态。也就是说,一个对象,多种形态。多态指在一般类中定义的属性和行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。

不管是男人还是女人,都属于人类(People)。男人类Man,女人类Woman,它们都继承自People(基类),如例4.1 所示。

例4.1:一个自我介绍的方法,介绍自己是男人还是女人,以刘德华和蔡依林为例。

People.java

Man.java

Woman.java(www.daowen.com)

Test.java(测试类)

以上程序运行结果如下:

一个父类可以有多个子类,在子类中可以重写父类的方法。这样每个子类里重写的代码不一样,自然表现形式就不一样。

下面以交通工具汽车火车为例。交通工具都有驾驶的方法,虽然继承自交通工具的汽车和火车也同样具有驾驶的方法,但是它们具体驾驶的方法不尽相同,如例4.2 所示。

例4.2:

Java 中没有多继承,而用接口实现了多继承。一个类可以同时实现多个接口,例如:

实现接口有利于代码功能的扩展(增加新的功能),而继承则有利于代码功能的修改(把旧的功能改成新的功能)。这里新功能的增加前提是不修改旧的功能,旧的功能仍然可以使用。旧类的代码也不做修改,将在后面的小节中介绍接口。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈