热门标签 | 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(服务器端编程)

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


推荐阅读
  • 远程过程调用(RPC)是一种允许客户端通过网络请求服务器执行特定功能的技术。它简化了分布式系统的交互,使开发者可以像调用本地函数一样调用远程服务,并获得返回结果。本文将深入探讨RPC的工作原理、发展历程及其在现代技术中的应用。 ... [详细]
  • Java项目分层架构设计与实践
    本文探讨了Java项目中应用分层的最佳实践,不仅介绍了常见的三层架构(Controller、Service、DAO),还深入分析了各层的职责划分及优化建议。通过合理的分层设计,可以提高代码的可维护性、扩展性和团队协作效率。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 深入理解Java多线程并发处理:基础与实践
    本文探讨了Java中的多线程并发处理机制,从基本概念到实际应用,帮助读者全面理解并掌握多线程编程技巧。通过实例解析和理论阐述,确保初学者也能轻松入门。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 本文详细介绍了如何在Kendo UI for jQuery的数据管理组件中,将行标题字段呈现为锚点(即可点击链接),帮助开发人员更高效地实现这一功能。通过具体的代码示例和解释,即使是新手也能轻松掌握。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • 深入解析 Android IPC 中的 Messenger 机制
    本文详细介绍了 Android 中基于消息传递的进程间通信(IPC)机制——Messenger。通过实例和源码分析,帮助开发者更好地理解和使用这一高效的通信工具。 ... [详细]
  • Linux环境下进程间通信:深入解析信号机制
    本文详细探讨了Linux系统中信号的生命周期,从信号生成到处理函数执行完毕的全过程,并介绍了信号编程中的注意事项和常见应用实例。通过分析信号在进程中的注册、注销及处理过程,帮助读者理解如何高效利用信号进行进程间通信。 ... [详细]
  • 程序员如何优雅应对35岁职业转型?这里有深度解析
    本文探讨了程序员在职业生涯中如何通过不断学习和技能提升,优雅地应对35岁左右的职业转型挑战。我们将深入分析当前热门技术趋势,并提供实用的学习路径。 ... [详细]
  • Java中的基本数据类型与包装类解析
    本文探讨了Java编程语言中的8种基本数据类型及其对应的包装类。通过分析这些数据类型的特性和使用场景,以及自动拆装箱机制的实现原理,帮助开发者更好地理解和应用这些概念。 ... [详细]
  • 本文深入探讨了面向切面编程(AOP)的概念及其在Spring框架中的应用。通过详细解释AOP的核心术语和实现机制,帮助读者理解如何利用AOP提高代码的可维护性和开发效率。 ... [详细]
  • 本文详细介绍了在不同操作系统中查找和设置网卡的方法,涵盖了Windows系统的具体步骤,并提供了关于网卡位置、无线网络设置及常见问题的解答。 ... [详细]
  • HTML基础入门指南
    本文将深入浅出地介绍HTML的基础知识,包括其定义、开发工具、制定机构、特性、基本标签及更多实用内容。 ... [详细]
  • 本文探讨了在 SQL Server 中使用 JDBC 插入数据时遇到的问题。通过详细分析代码和数据库配置,提供了解决方案并解释了潜在的原因。 ... [详细]
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社区 版权所有