《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)可插拔和易于调试。当个别对象出问题时,可以将其从程序中移除,并插入另一个对象来替换它。这与现实生活中的维修机制类似。比如说,机器的螺栓坏了,只需更换该螺栓,而不需要更换整台机器。

相关文章
|
27天前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
62 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
11天前
|
安全 Java 编译器
Java对象一定分配在堆上吗?
本文探讨了Java对象的内存分配问题,重点介绍了JVM的逃逸分析技术及其优化策略。逃逸分析能判断对象是否会在作用域外被访问,从而决定对象是否需要分配到堆上。文章详细讲解了栈上分配、标量替换和同步消除三种优化策略,并通过示例代码说明了这些技术的应用场景。
Java对象一定分配在堆上吗?
|
2天前
|
SQL 安全 Java
安全问题已经成为软件开发中不可忽视的重要议题。对于使用Java语言开发的应用程序来说,安全性更是至关重要
在当今网络环境下,Java应用的安全性至关重要。本文深入探讨了Java安全编程的最佳实践,包括代码审查、输入验证、输出编码、访问控制和加密技术等,帮助开发者构建安全可靠的应用。通过掌握相关技术和工具,开发者可以有效防范安全威胁,确保应用的安全性。
12 4
|
15天前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
35 17
|
14天前
|
存储 安全 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第22天】在Java的世界里,对象序列化和反序列化是数据持久化和网络传输的关键技术。本文将带你了解如何在Java中实现对象的序列化与反序列化,并探讨其背后的原理。通过实际代码示例,我们将一步步展示如何将复杂数据结构转换为字节流,以及如何将这些字节流还原为Java对象。文章还将讨论在使用序列化时应注意的安全性问题,以确保你的应用程序既高效又安全。
|
23天前
|
存储 Java 数据管理
Java零基础-Java对象详解
【10月更文挑战第7天】Java零基础教学篇,手把手实践教学!
23 6
|
23天前
|
Java 程序员 编译器
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。本文通过示例详细解析了保留字的定义、作用及与自定义标识符的区别,帮助开发者避免因误用保留字而导致的编译错误,确保代码的正确性和可读性。
41 3
|
26天前
|
移动开发 Java 大数据
深入探索Java语言的核心优势与现代应用实践
【10月更文挑战第10天】深入探索Java语言的核心优势与现代应用实践
41 4
|
27天前
|
Oracle Java 关系型数据库
重新定义 Java 对象相等性
本文探讨了Java中的对象相等性问题,包括自反性、对称性、传递性和一致性等原则,并通过LaptopCharger类的例子展示了引用相等与内容相等的区别。文章还介绍了如何通过重写`equals`方法和使用`Comparator`接口来实现更复杂的相等度量,以满足特定的业务需求。
17 3
|
27天前
|
存储 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第9天】在Java的世界里,对象序列化是连接数据持久化与网络通信的桥梁。本文将深入探讨Java对象序列化的机制、实践方法及反序列化过程,通过代码示例揭示其背后的原理。从基础概念到高级应用,我们将一步步揭开序列化技术的神秘面纱,让读者能够掌握这一强大工具,以应对数据存储和传输的挑战。
下一篇
无影云桌面