原文地址: docs.oracle.com/javase/tuto…
对象是理解面向对象技术的关键。环顾四周,你会发现很多现实世界中的对象:小狗,桌子,电视机,自行车。 现实世界中的对象具有两个特征:它们都拥有状态和行为。小狗具体状态(名字,毛色,品种,饥饿状况)和行为(吠叫,挑逗,摇尾巴)。自行车也拥有状态(当前的齿轮,当前的速度)和行为(换齿轮,刹车,提速)。通过识别真实对象的状态和行为来学习面向对象编程不失为一种很好的方法。
现在就花一分钟观察一下你周围的现实世界,对于你看的到所有对象,问自己两个问题:这个对象可能处于什么状态?这个对象可能执行什么行为。一定要写下你的观察结果。你会注意到现实世界中的对象是非常复杂的;你的桌灯可能仅有两种状态(开和关)和两种行为(开灯和关灯),但是你的桌面收音机可能有更多的状态(开、关、当前音量、当前频段)和行为(开机,关机,增大音量,减小音量,调频等等)。你还可能注意到,有些对象甚至还包含其他对象。将这些现实世界的观察都转化为面向对象编程的世界。
软件对象在概念上类似于现实世界中的对象:它们都由状态和相关的行为组成。一个对象将它自身的状态存储在字段(field)中(在一些语言中称之为变量),并通过方法公开其方法(一些语言中称之为函数)。
方法操作对象的内部状态,并作为对象到对象通信的主要机制。隐藏内部状态并要求所有交互都通过对象的方法来执行,这就是所谓的数据封装--面向对象编程的基本原则 举个关于自行车的例子:
通过指定状态(当前速度、当前齿轮型号等)并提供更改该状态的方法,对象仍然控制着外部世界如何使用它。举个例子:如果自行车仅有6个齿轮,改变齿轮的方法将拒绝任何小于1或者大于6的值。
将代码捆绑到单个软件对象中提供了许多好处,其中包括: