多态的好处

多态有什么好处?

有两个好处:

1. 应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。//继承 
2. 派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性。 //多态的真正作用,

Java面向对象的三个核心内容:继承,封装和多态,都挺抽象的,要想有深刻的理解,必须要在实际的例子中多多体验。我刚接触多态的时候,始终搞不清楚他的意义。直到前几天做的超市管理项目中,我终于体会到了多态的好处。

这个超市管理系统,没有用数据库工具,而必须自己编写程序实现客户端与服务器的通信。为此,指定了通信协议:

对于服务器:

  1. 接受通信码(确定这次通信的目的,也就确定了接下来接受和回复的数据类型)
  2. 接受处理所需数据
  3. 回复处理结果给客户端

对于客户端:

  1. 发送通信码,请求服务器相关服务。比如验证用户名和密码是否正确
  2. 发送请求所需数据给服务器
  3. 接受服务器处理结果

在上面的例子中,服务器需要根据接收到的通信码跳转到相应的方法去处理具体事物。因此通信码通常为整型或者枚举类型。而处理数据则有可能是多种类型,可能是user对象,也可能是Product对象,也可能是boolean值。这是,如果在Socket上发送信息,不同数据用不同的发送接收方法,那整个发送接收的过程将变得无比复杂。

这时,最好的办法,就是统一格式,所有内容都包装成Object类型发送。接受方也都接受Object类型。在需要用到数据的时候,再通过强转,还原他本来的类型。如此程序就会简化和简洁很多。这其实就是多态的好处。

类一层一层往下继承,越往下越具体,越有针对性。我们处理数据,往往需要的就是这种具体的,有针对想的数据。可是,往下的同时,他的适用面也越来越窄了。每往下走一层,它就失去了一些方法。(如何理解这句话呢?比如上面的情形,我需要发送一个整数给服务器,如果我发送int类型,那么就必须用oos.write(int)的方法,这就给接受端写带来带来了很多不便,因为接收端就必须要ois.read(int)来接受。如果是一对一发送单一数据类型的情况还好。如果偶尔发整数,偶尔发对象,偶尔发字符串,而且两边还都是在复杂的跳转结构中发送,那这种发送方式就给设计带来了很多不便。这时,如果我把所有要发送的内容,升级成为Object类型就方便多了。

猜你喜欢

转载自blog.csdn.net/illikang/article/details/81267009