该Java教程是针对JDK 8编写的。本页面描述的示例和实践不利用后续版本中引入的改进,并且可能使用不再可用的技术。
请参阅Java语言变化了解Java SE 9及后续版本中更新的语言特性的概要。
请参阅JDK发布说明了解所有JDK版本的新功能、增强功能以及已删除或弃用选项的信息。
对象是理解面向对象技术的关键。现在环顾四周,你会发现许多现实世界的对象:你的狗,你的桌子,你的电视机,你的自行车。
现实世界的对象有两个共同特征:它们都有状态和行为。狗有状态(名字,颜色,品种,饥饿)和行为(叫,接球,摇尾巴)。自行车也有状态(当前档位,当前踏频,当前速度)和行为(换档,改变踏频,刹车)。识别现实世界对象的状态和行为是开始以面向对象编程思考的好方法。
现在花一分钟观察你周围的现实世界对象。对于你看到的每个对象,问自己两个问题:“这个对象可能处于哪些状态?”和“这个对象可能执行哪些行为?”确保写下你的观察。当你这样做时,你会注意到现实世界的对象的复杂性不同;你的台灯可能只有两种可能的状态(开和关)和两种可能的行为(打开,关闭),但是你的收音机可能有其他状态(开,关,当前音量,当前频道)和行为(打开,关闭,增加音量,减小音量,搜索,扫描和调谐)。你还可能注意到一些对象反过来也包含其他对象。这些现实世界的观察都可以转化为面向对象编程的世界。
一个软件对象。
软件对象在概念上类似于现实世界的对象:它们也包含状态和相关行为。对象将其状态存储在字段中(某些编程语言中的变量),并通过方法(某些编程语言中的函数)暴露其行为。方法操作对象的内部状态,并作为对象之间通信的主要机制。隐藏内部状态并要求所有交互都通过对象的方法进行执行被称为数据封装——这是面向对象编程的基本原则。
例如,考虑一个自行车:
一个以软件对象为模型的自行车。
通过赋予状态(当前速度,当前踏频和当前档位)并提供改变该状态的方法,对象可以控制外部世界如何使用它。例如,如果自行车只有6个档位,换档的方法可以拒绝任何小于1或大于6的值。
将代码打包成独立的软件对象带来了许多好处,包括: