热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《Java编程思想》学习笔记(一)——再度理解OOP

实践是认识的来源和基础、是认识的动力、是检验其真理性的标准。工作一年后再回过头来看看,还是学生的时候对编程语言产生的各种疑问,突然间,好像有了那么点儿豁然开朗的感觉。但,真正的豁然开朗还是在品读了《J

实践是认识的来源和基础、是认识的动力、是检验其真理性的标准。工作一年后再回过头来看看,还是学生的时候对编程语言产生的各种疑问,突然间,好像有了那么点儿豁然开朗的感觉。但,真正的豁然开朗还是在品读了《Java编程思想》第一章后油然而生,同时也对Bruce Eckel崇拜的五体投地。

作为一个中国式教育的成品,作为一个多年饱受我国教科书式著作熏陶的人,虽然读着Bruce大师的文章感觉很爽,但却难以系统的消化,所以还是对其内容进行一下梳理,帮助理解记忆。

第一章主要简单介绍了面向对象编程(OOP)的一些核心思想和面向对象编程语言的特点,对于特点,当初学习面向对象编程语言的时候,属实背的滚瓜烂熟啦,但是,没有了思想的概念,就像一潭死水,真正起到点睛作用的还是Bruce大师结合例子的设计思想来对这些特点进行的描述。所以,一门语言的重点不是它具有特色的语法结构,而是,我们如何利用它的特点来解决我们的问题,也就是所谓的设计思想。下面将自己对第一章内容的梳理和理解描述如下:

=========================================================================

面向对象编程(OOP)

目标(goal):与面向过程编程相比,是为了在解决现实问题时,以问题为核心,建立对问题结构的考虑,而不是将问题的解决基于计算机的结构、程序员必须建立机器和实际待解决问题之间的关联。

---------------

特性(feature):抽象性(类和对象)、封装性、继承性、多态性

抽象性和封装性——对问题空间的抽象是面向对象的核心,人们所能够解决的问题的复杂性直接取决于抽象的类型和质量。Bruce告诉我们的抽象原则是,将问题肢解成一小块儿一小块儿,然后针对每一小块儿去构想一个角色,该角色就是能够解决该一小块儿问题的对象,然后确定了该对象应该提供什么服务及具备什么属性后,便可将其封装成类。

访问控制的意义:当把程序员按角色分成类创建者和类使用者后,通过访问控制将类内部构造完全对类使用者屏蔽,这样,一方面,类创建者对内部进行修改,只要保证对类使用者公开的接口保持不变,便不影响其正常使用,另一方面,类使用者无法在不知情的情况下破话类内部脆弱的部分,从而可以减少程序的BUG。Java除了pulic、private和protected三个访问控制词外,还包含包的访问权限。

继承性——“是一个”表示继承后覆盖基类的方法,“像一个”表示继承后在子类中增加基类没有的方法,部分继承可通过private来控制。

多态性——通过后期绑定实现将子类对象当作其泛化基类型对象来看待,从而达到功能的扩展不更改或者尽量少的更改原有代码,进一步降低维护的成本。

---------------

在对对象的数量和生存周期没有确切的把握时最好使用范型容器

除了基本类型外,Java中对象都是通过new创建在堆上的,且有垃圾回收器来处理内存释放问题

Java中异常处理是强制的

Java提供了很多库来支持多线程,为了提高程序的响应能力,比如用户界面响应与后台处理的多任务执行

---------------

在“Java与Internet”一节中,Bruce以选择什么样的解决方案为引子简单介绍了Java在B/S模式中的应用及优势,其中涉及到的Java的元素有Java applet(客户端编程)、Java Web Start(客户端编程)、Java servlet(服务器端编程)

最后的结论是:根据问题的实际情况来选择什么样的编程语言、选择采用什么样的技术提供合理的解决方案


推荐阅读
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 本文总结了近年来在实际项目中使用消息中间件的经验和常见问题,旨在为Java初学者和中级开发者提供实用的参考。文章详细介绍了消息中间件在分布式系统中的作用,以及如何通过消息中间件实现高可用性和可扩展性。 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
  • 深入探讨前端代码优化策略
    本文深入讨论了前端开发中代码优化的关键技术,包括JavaScript、HTML和CSS的优化方法,旨在提升网页加载速度和用户体验。 ... [详细]
  • 问题场景用Java进行web开发过程当中,当遇到很多很多个字段的实体时,最苦恼的莫过于编辑字段的查看和修改界面,发现2个页面存在很多重复信息,能不能写一遍?有没有轮子用都不如自己造。解决方式笔者根据自 ... [详细]
  • 汇编语言:编程世界的始祖,连C语言都敬畏三分!
    当C语言还在萌芽阶段时,它首次接触到了汇编语言,并对其简洁性感到震惊。尽管汇编语言的指令极其简单,但它却是所有现代编程语言的基础,其重要性不言而喻。 ... [详细]
  • 每种编程语言都有其独特的完成任务的方式,这也说明了为什么有这么多语言可供选择。在JimHall的《不同的编程语言如何完成相同的事情》文章中,他演示了13种不同的语言如何使用不同的语 ... [详细]
  • 在Effective Java第三版中,建议在方法返回类型中优先考虑使用Collection而非Stream,以提高代码的灵活性和兼容性。 ... [详细]
  • 本文将探讨如何在 Struts2 中使用 ActionContext 和 ServletActionContext 来获取请求参数和会话信息,同时解释它们的内部机制和最佳实践。 ... [详细]
  • 探讨低代码行业发展现状,分析其未能催生大型企业的原因,包括市场需求、技术局限及商业模型等方面。 ... [详细]
  • Web前端开发的职业前景与就业指南
    随着互联网行业的蓬勃发展,Web前端技术因其在用户界面和交互设计中的关键作用而备受企业重视。本文探讨了前端开发的职业前景,以及应届毕业生如何提高自己的竞争力。 ... [详细]
  • 解析链接脚本与可执行文件的关系
    本文详细探讨了链接脚本和可执行文件的基本概念及其在嵌入式系统中的应用,特别是S32K144芯片的具体实现。 ... [详细]
  • 本文将深入探讨C语言代码的可重用性,解释其重要性和实现方法。通过具体示例,我们将展示如何通过封装和模块化设计提高代码的可重用性。 ... [详细]
author-avatar
夜阑人静1314coolgirl
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有