转载

【译】Java官方教程:何为对象?

原文地址: docs.oracle.com/javase/tuto…

对象是理解面向对象技术的关键。环顾四周,你会发现很多现实世界中的对象:小狗,桌子,电视机,自行车。 现实世界中的对象具有两个特征:它们都拥有状态和行为。小狗具体状态(名字,毛色,品种,饥饿状况)和行为(吠叫,挑逗,摇尾巴)。自行车也拥有状态(当前的齿轮,当前的速度)和行为(换齿轮,刹车,提速)。通过识别真实对象的状态和行为来学习面向对象编程不失为一种很好的方法。

现在就花一分钟观察一下你周围的现实世界,对于你看的到所有对象,问自己两个问题:这个对象可能处于什么状态?这个对象可能执行什么行为。一定要写下你的观察结果。你会注意到现实世界中的对象是非常复杂的;你的桌灯可能仅有两种状态(开和关)和两种行为(开灯和关灯),但是你的桌面收音机可能有更多的状态(开、关、当前音量、当前频段)和行为(开机,关机,增大音量,减小音量,调频等等)。你还可能注意到,有些对象甚至还包含其他对象。将这些现实世界的观察都转化为面向对象编程的世界。

【译】Java官方教程:何为对象?

软件对象在概念上类似于现实世界中的对象:它们都由状态和相关的行为组成。一个对象将它自身的状态存储在字段(field)中(在一些语言中称之为变量),并通过方法公开其方法(一些语言中称之为函数)。

方法操作对象的内部状态,并作为对象到对象通信的主要机制。隐藏内部状态并要求所有交互都通过对象的方法来执行,这就是所谓的数据封装--面向对象编程的基本原则 举个关于自行车的例子:

【译】Java官方教程:何为对象?

通过指定状态(当前速度、当前齿轮型号等)并提供更改该状态的方法,对象仍然控制着外部世界如何使用它。举个例子:如果自行车仅有6个齿轮,改变齿轮的方法将拒绝任何小于1或者大于6的值。

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

  • 模块性:对象的源代码可以独立于其他对象的源代码来编写和维护,一旦创建了对象,就可以在系统中轻松地传递对象
  • 封装性:通过只与对象的方法交互,其内部实现的细节对外部世界仍然是隐藏的
  • 代码易复用:如果已经存在一个对象(可能是其它开发人员编写的),则可以在你自己的程序中使用它。 这允许技术专家实现/测试/调试复杂的,特定任务的对象,然后您可以信任这些对象在您自己的代码中运行
  • 插件化并易于调试:如果某个特定对象出现问题,你可以方便的在应用中移除并用另外的对象来替代。这类似于解决现实世界中的机械问题,如果一个螺栓坏了,你仅需要更换螺栓,而不是整个机器
原文  https://juejin.im/post/5cd3fc5df265da035d0c962c
正文到此结束
Loading...