Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
对象是理解 object-oriented (面向对象) 技术的关键。现在环顾四周,你会发现许多真实世界物体的例子:你的狗,你的桌子,你的电视机,你的自行车。
真实世界的对象有两个特征:它们都具有 state (状态) 和 behavior (行为)。狗有状态(名字,颜色,品种,饥饿)和行为(吠叫,取食,摇尾巴)。自行车也具有状态(当前档位,当前踏板节奏,当前速度)和行为(变换档位,改变踏板节奏,应用刹车)。识别真实世界对象的状态和行为是从面向对象编程开始思考的好方法。
现在花一点时间观察你附近区域的真实世界物体。对于你看到的每个物体,问自己两个问题:"这个物体可能有哪些状态?" 和 "这个对象有什么可能的行为?"。确保写下你的观察结果。和你一样,你会注意到真实世界的对象在复杂性上有所不同。你的桌面灯可能只有两种可能的状态(开和关)以及两种可能的行为(打开,关闭),但你的桌面收音机可能会有其他状态(开,关,当前音量,当前电台)和行为(打开,关闭,增加音量,减小音量,搜寻,扫描和调谐)。你可能还会注意到,某些对象反过来也会包含其他对象。这些真实世界的观察都转化为面向对象编程的世界。
一个软件对象。
软件对象在概念上与真实世界的对象相似:它们也包含状态和相关行为。对象将其状态存储在 fields (字段)(某些编程语言中称为变量)中,并通过 methods (方法)(某些编程语言中称为函数)公开其行为。方法对对象的内部状态进行操作,并作为对象到对象通信的主要机制。隐藏内部状态并且要求通过对象的方法执行所有交互被称为 data encapsulation (数据封装) 一个面向对象编程的基本原理。
考虑一下自行车,例如:
一辆模仿为软件物体的自行车。
通过赋予状态(当前速度,当前踏板节奏和当前档位)并提供改变该状态的方法,该对象仍然控制着外界如何使用它。例如,如果自行车只有 6 个档位,则更换档位的方法可以拒绝任何小于 1 或大于 6 的值。
将代码打包到单个软件对象中提供了许多好处,其中包括: