文档

Java™ 教程-Java Tutorials 中文版
什么是对象?
Trail: Learning the Java Language
Lesson: Object-Oriented Programming Concepts

什么是对象?

对象是理解 object-oriented (面向对象) 技术的关键。现在环顾四周,你会发现许多真实世界物体的例子:你的狗,你的桌子,你的电视机,你的自行车。

真实世界的对象有两个特征:它们都具有 state (状态)behavior (行为)。狗有状态(名字,颜色,品种,饥饿)和行为(吠叫,取食,摇尾巴)。自行车也具有状态(当前档位,当前踏板节奏,当前速度)和行为(变换档位,改变踏板节奏,应用刹车)。识别真实世界对象的状态和行为是从面向对象编程开始思考的好方法。

现在花一点时间观察你附近区域的真实世界物体。对于你看到的每个物体,问自己两个问题:"这个物体可能有哪些状态?" 和 "这个对象有什么可能的行为?"。确保写下你的观察结果。和你一样,你会注意到真实世界的对象在复杂性上有所不同。你的桌面灯可能只有两种可能的状态(开和关)以及两种可能的行为(打开,关闭),但你的桌面收音机可能会有其他状态(开,关,当前音量,当前电台)和行为(打开,关闭,增加音量,减小音量,搜寻,扫描和调谐)。你可能还会注意到,某些对象反过来也会包含其他对象。这些真实世界的观察都转化为面向对象编程的世界。

一个内圈填充物品的圆圈,周围是灰色的楔子,代表允许访问内圈的方法。

一个软件对象。


软件对象在概念上与真实世界的对象相似:它们也包含状态和相关行为。对象将其状态存储在 fields (字段)(某些编程语言中称为变量)中,并通过 methods (方法)(某些编程语言中称为函数)公开其行为。方法对对象的内部状态进行操作,并作为对象到对象通信的主要机制。隐藏内部状态并且要求通过对象的方法执行所有交互被称为 data encapsulation (数据封装) — 一个面向对象编程的基本原理。

考虑一下自行车,例如:

一个物体的图片,带有自行车方法和实例变量。

一辆模仿为软件物体的自行车。


通过赋予状态(当前速度,当前踏板节奏和当前档位)并提供改变该状态的方法,该对象仍然控制着外界如何使用它。例如,如果自行车只有 6 个档位,则更换档位的方法可以拒绝任何小于 1 或大于 6 的值。

将代码打包到单个软件对象中提供了许多好处,其中包括:

  1. 模块化:可以独立于其他对象的源代码编写和维护对象的源代码。一旦创建,一个对象可以很容易地在系统内传递。
  2. 信息隐藏:通过仅与对象的方法交互,其内部实现的细节对外界保持隐藏。
  3. 代码重用:如果某个对象已经存在(可能由另一个软件开发人员编写),则可以在程序中使用该对象。这允许专家实现/测试/调试复杂的,特定于任务的对象,然后你可以信任它们在自己的代码中运行。
  4. 可插拔性和调试简便性:如果某个特定对象变得有问题,你可以简单地将它从应用程序中删除,并插入其他对象作为替换对象。这类似于解决现实世界中的机械问题。如果螺栓损坏,请更换 ,而不是整个机器。

Previous page: Object-Oriented Programming Concepts
Next page: What Is a Class?