《Java语言导学(原书第6版)》一2.1 对象

简介: 本节书摘来华章计算机《Java语言导学(原书第6版)》一书中的第2章 ,第2.1节,[美] 雷蒙德·盖拉多(Raymond Gallardo), 斯科特·霍梅尔(Scott Hommel), 索亚·坎南(Sowmya Kannan), 琼尼·戈登(Joni Gordon), 沙伦·比奥卡·扎卡沃(Sharon Biocca Zakhour) 著 董笑菊 薛建新 吴 帆 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.1 对象

对象是理解面向对象技术的关键概念。生活中有很多对象的例子,如狗、桌子、电视机、自行车等。
生活中的对象都有两个共同的属性:状态和行为。狗有名字、颜色、品种等状态,以及犬吠、抓东西、摇尾巴等行为。自行车有当前档位、当前脚踏频率、当前速度等状态和换档、变换踏板频率、刹车等行为。根据面向对象编程的思路来确定生活中对象的状态和行为是很好的方法。
前面已经介绍了生活中的几个对象。对每个对象,都有两个问题:“它处于什么状态”和“它会发生什么行为”。仔细观察并写下这些状态和行为,会发现生活中的对象差别很大。例如,台灯只有两个状态(开、关)和两种行为(打开、关闭),而收音机有其他状态(开、关、当前音量、当前电台)和行为(打开、关闭、提高音量、降低音量、搜索、扫描、调频)。而且,有些对象还包含其他对象。这些观察结果都可以翻译成面向对象程序。
就概念而言,软件对象与生活中的对象类似,也包含状态和行为两大属性。如图2-1所示,软件对象用字段(field,有些程序语言称为变量,variable)存储状态,用方法(method,有些程序语言称为函数,function)定义行为。方法对对象的内部状态进行操作,是对象之间通信的基本机制。这种隐藏对象内部状态,要求所有通信都通过对象的方法实现的行为,是面向对象编程的基本原则,通常称为数据封装。
图2-2以自行车为例来说明。外界如何使用对象,取决于其状态(当前档位、当前脚踏频率、当前速度)和改变状态的方法。如果自行车只有6个档位,就不能将其换成低于1或大于6的档位。
   
  image

将代码构建成独立的软件对象,具有以下优点:
1)模块化。每个对象的源代码,其编写和维护都独立于其他对象。对象一旦创建,就很容易在系统内传送。
2)信息隐藏。用户只能与对象的方法交互,对象的内部实现细节对外界是隐藏的。
3)代码重用。如果对象已经创建(可能是其他开发人员编写),就可以直接使用该对象。这样一来,写程序时就可以直接调用那些由专家实现、测试和调试通过的复杂、特定功能的对象。
4)可插拔和易于调试。当个别对象出问题时,可以将其从程序中移除,并插入另一个对象来替换它。这与现实生活中的维修机制类似。比如说,机器的螺栓坏了,只需更换该螺栓,而不需要更换整台机器。

相关文章
|
4月前
|
设计模式 网络协议 数据可视化
Java 设计模式之状态模式:让对象的行为随状态优雅变化
状态模式通过封装对象的状态,使行为随状态变化而改变。以订单为例,将待支付、已支付等状态独立成类,消除冗长条件判断,提升代码可维护性与扩展性,适用于状态多、转换复杂的场景。
475 0
|
6月前
|
JSON Java API
【干货满满】分享京东API接口到手价,用Java语言实现
本示例使用 Java 调用京东开放平台商品价格及优惠信息 API,通过商品详情和促销接口获取到手价(含优惠券、满减等),包含签名生成、HTTP 请求及响应解析逻辑,适用于比价工具、电商系统集成等场景。
|
4月前
|
Java
Java语言实现字母大小写转换的方法
Java提供了多种灵活的方法来处理字符串中的字母大小写转换。根据具体需求,可以选择适合的方法来实现。在大多数情况下,使用 String类或 Character类的方法已经足够。但是,在需要更复杂的逻辑或处理非常规字符集时,可以通过字符流或手动遍历字符串来实现更精细的控制。
370 18
|
4月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
200 4
|
5月前
|
存储 Java Apache
Java语言操作INI配置文件策略
以上步骤展示了基本策略,在实际项目中可能需要根据具体需求进行调整优化。例如,在多线程环境中操作同一份配置时需要考虑线程安全问题;大型项目可能还需考虑性能问题等等。
261 15
|
6月前
|
缓存 安全 Java
Java反射机制:动态操作类与对象
Java反射机制是运行时动态操作类与对象的强大工具,支持获取类信息、动态创建实例、调用方法、访问字段等。它在框架开发、依赖注入、动态代理等方面有广泛应用,但也存在性能开销和安全风险。本文详解反射核心API、实战案例及性能优化策略,助你掌握Java动态编程精髓。
|
7月前
|
监控 Java API
Java语言按文件创建日期排序及获取最新文件的技术
这段代码实现了文件创建时间的读取、文件列表的获取与排序以及获取最新文件的需求。它具备良好的效率和可读性,对于绝大多数处理文件属性相关的需求来说足够健壮。在实际应用中,根据具体情况,可能还需要进一步处理如访问权限不足、文件系统不支持某些属性等边界情况。
364 14
|
6月前
|
算法 Java
Java语言实现链表反转的方法
这种反转方法不需要使用额外的存储空间,因此空间复杂度为,它只需要遍历一次链表,所以时间复杂度为,其中为链表的长度。这使得这种反转链表的方法既高效又实用。
540 0
|
6月前
|
JSON Java API
【干货满满】分享拼多多API接口到手价,用Java语言实现
本方案基于 Java 实现调用拼多多开放平台商品详情 API,通过联盟接口获取商品到手价(含拼团折扣与优惠券),包含签名生成、HTTP 请求及响应解析逻辑,适用于电商比价、导购系统集成。
|
6月前
|
JSON Java API
【干货满满】分享淘宝API接口到手价,用Java语言实现
本文介绍了如何使用 Java 调用淘宝开放平台 API 获取商品到手价,涵盖依赖配置、签名生成、HTTP 请求与响应解析等核心实现步骤。