在学网络的OSI模型时,我们知道了,因为人最适合思考的问题复杂度为3-7,所以OSI才分了七层。而IT做多了,就知道了,随便一个简单系统其复杂度都成百上千,而IT的三个世界,即从现实世界到计算机可运行的数字世界要靠我们IT人头脑中的想象的世界作为桥梁进行翻译。那我们该如何管理其间的复杂度呢?!

通过OSI,我们理解了IT管理复杂度的核心思想就是分层,即通过分层来降阶复杂的世界,使得我们一次只需考虑几个最多十几个复杂度就好了,而整个系统的可靠性通过同层对等、层间约定接口进行组装。

而这种依靠接口契约来切分子系统、逐层总装的思想就是IT管理复杂度的核心手段。而面向对象技术就是这一手段在编程领域最大的成果。其中多态的作用就是保持契约完好,即同一基类具有行为的一致性,在考虑这类对象和整个系统其它要素的协作时,就不需要考虑不同类的行为差异,这就降低了这个场景下的复杂度。

作为一个例子,我最近的一个项目要用go,结果我顺手就用了一个多态,结果发现go不支持:( 那我就没办法传一个基类给到其它函数,然后自动根据实际的对象类型来决定到底调哪个函数。所以我就必须自己很清楚要传递什么样的对象其到底要干什么,而相对来说,以后如果系统要扩展也不是很容易。

当然,go也提供了接口,所以go是传接口而不是传基类来解决这个问题。但同一接口的不同对象在复用代码方面就没有用继承来的简洁了。

所以呢,java是往方便我们高度抽象、降低复杂度方向努力的,所以特别适合解决复杂的业务管理问题;而go则是啥事你都得先想清楚了,然后支持我们干净利落的高效解决问题的。

java多态的好处_java萌新,对象的多态有什么好处?相关推荐

  1. java 封装 继承 堕胎_JAVA封装、继承、多态

    封装 1.概念: 将类的某些信息隐藏在类的内部,不允许外部程序访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: a.只能通过规定的方法访问数据 b.隐藏类的实例细节,方便修改和实 ...

  2. java多态和泛型_Java面向对象(二) 接口、多态和泛型

    一.接口 二.多态 多态是同一个行为具有多个不同表现形式或形态的能力. 2.1 类型转换 转换方式 隐式 向上转型 对于基本数据类型,存储容量低的可自动向存储容量高的类型转换 对于引用变量,子类可被转 ...

  3. java字符串去重复_Java 8新特性:字符串去重

    本文首发与InfoQ. 8月19日,Oracle发布了JDK 8u20,JDK 8u20包含很多新特性,比如Java编译器更新.支持在运行时通过API来修改MinHeapFreeRatio和MaxHe ...

  4. java 流常用接口_java 8新特性5--使用集合流式API

    PS:向公众号发送关键字可以搜索文章哦! 使用集合的流式API 直接上代码了,常用api都有了,要点都在注释中 苹果类: packagejava8.stream;/***@authorqiang.xi ...

  5. java中的“+”运算符,产生新对象问题。(非常好的面试题!)

    刚刚在一个帖子中看到的问题,以前没有怎么注意. 这是一个非常好的面试题! String a = "ab"; String b = "a" + "b&q ...

  6. java new thread参数_java开启新线程并传参的两种方法

    一.继承Thread类 步骤: 1):定义一个类A继承于Java.lang.Thread类. 2):在A类中覆盖Thread类中的run方法. 3):我们在run方法中编写需要执行的操作:run方法里 ...

  7. java 参数传递为空_java 参数传递 空对象 null

    前两天,写程序时候,想传递一个数组名给一个函数,然后给数组new一下,并初始化数据,这样就使用非return,获得了一个初始化过对象,但是运行程序报"NullPointerException ...

  8. java动态添加属性_java – 动态添加对象的属性

    你好: 在我们的应用程序中,我们从数据库中检索了一些数据,例如,表格中包含以下字符:id,name,age,address,email. 然后我们将根据客户获得一些这些属性. 如果客户端需要id,na ...

  9. java 管理对象是什么_Java工程师(16)对象的管理

    包 包的创建规则 包可以有层次,在创建包时可以一次性创建多级包,上下级之间用"."分割,如下图所示. 访问修饰符 简介 访问修饰符包括:private.protected.publ ...

最新文章

  1. Windows下安装Redis服务
  2. html5通html5通,HTML5 history详解
  3. Go语言可能会遇到的坑
  4. 【网址收藏】Fedora 34安装Wine、微信
  5. ubuntu下c 访问mysql_Ubuntu下用C语言访问MySQL数据库
  6. 5新建没有头文件_开垦绿茵版图迎来“真金白银”保障,新建足球场地可获财政补贴...
  7. Shell编程:shell script 的追踪与 debug
  8. Linux - CentOS基础
  9. mysql创建索引视图_mysql中创建视图、索引
  10. 湖南大学ACM——10015.self-numbers
  11. Unity 3D涂色
  12. xbox会员中心在哪_白金会会员中心
  13. Vmware Ubuntu虚拟机提示:无法连接虚拟设备 sata0:1,因为主机上没有相对应的设备,解决办法
  14. Spark环境搭建Standalone模式
  15. IT工作人员健康指南
  16. Linux文件目录操作命令-more命令
  17. 钉钉氚云到金碟之三 DELPHI从氚云下载数据
  18. EXCEL骨灰级玩家必备技能,学会后年薪翻倍!年轻人耗子尾汁
  19. 2018年全国多校算法寒假训练营练习比赛(第二场)H-了断局
  20. 机器学习实践之集成方法(随机森林和AdaBoost元算法提高分类性能)

热门文章

  1. go语言和java比_Go VS Java:一位资深程序员对两种语言的解读
  2. mysql分布式数据库架构_MySQL分布式数据库架构:分库、分表、排序、分页、分组、实现教程...
  3. java long常量池_Java提高篇之常量池
  4. java url 短链接_推荐几个官方腾讯短链接url接口(含PHP演示代码)
  5. python 文本框位置_「每日一练」Python文本框的显示和插入
  6. EL表达式JSON应用
  7. maven中ssm框架快速搭建
  8. Android导入第三方静态库.a编译成动态库.so
  9. Spring AOP源码分析(二)JDK动态代理和CGLIB介绍
  10. 我的第一个wp8小程序