详解--数据封装

在优锐课的java架构学习中,数据封装是使用对象编程时要掌握的最重要概念。 在面向对象的编程中,数据封装与以下方面有关:

结合数据及其在一个地方的处理方式。 这是通过对象的状态(私有字段)和行为(公共方法)实现的。
仅允许通过行为访问和修改对象的状态。 然后可以严格控制对象状态中包含的值。
隐藏对象工作原理的详细信息。 外界可以访问的对象的唯一部分是其行为。 这些行为内部发生的事情以及状态的存储方式都无法看到。

实施数据封装
首先,我们必须设计对象,使其具有状态和行为。 我们创建包含状态的私有字段和作为行为的公共方法。

例如,如果我们设计一个人员对象,则可以创建私有字段来存储人员的名字,姓氏和地址。 这三个字段的值组合在一起形成对象的状态。 我们还可以创建一个名为displayPersonDetails的方法,以在屏幕上显示名字,姓氏和地址的值。

接下来,我们必须做出访问和修改对象状态的行为。 这可以通过三种方式完成:
接下来,我们必须做出访问和修改对象状态的行为。 这可以通过三种方式完成:

构造方法。 通过调用构造方法创建对象的新实例。 可以将值传递给构造函数方法以设置对象的初始状态。 有两个有趣的事情要注意。 首先,Java并不坚持每个对象都有构造函数方法。 如果不存在任何方法,则对象的状态将使用私有字段的默认值。 第二,可以存在多个构造方法。 这些方法在传递给它们的值以及它们如何设置对象的初始状态方面会有所不同。

存取器方法。 对于每个私有字段,我们可以创建一个将返回其值的公共方法。

Mutator方法。 对于每个私有字段,我们可以创建一个公共方法来设置其值。 如果你希望私有字段是只读的,请不要为其创建一个mutator方法。
例如,我们可以将person对象设计为具有两个构造方法。 第一个不带任何值,只是将对象设置为默认状态(即,名字,姓氏和地址为空字符串)。 第二个从传递给它的值中设置名字和姓氏的初始值。 我们还可以创建三个访问器方法,分别称为getFirstName,getLastName和getAddress,它们仅返回相应私有字段的值。 创建一个名为setAddress的mutator字段,该字段将设置地址私有字段的值。

最后,我们隐藏对象的实现细节。 只要我们坚持将状态字段设为私有,并将行为公开化,外界就无法知道对象在内部如何工作。

数据封装的原因

采用数据封装的主要原因是:

保持对象状态合法。通过强制使用公共方法修改对象的私有字段,我们可以将代码添加到mutator或构造方法中,以确保该值合法。例如,假设人员对象还存储用户名作为其状态的一部分。用户名用于登录我们正在构建的Java应用程序,但长度不能超过10个字符。我们可以做的是将代码添加到用户名的mutator方法中,以确保用户名的值不超过十个字符。

我们可以更改对象的实现。只要我们保持公共方法不变,我们就可以更改对象的工作方式而不会破坏使用它的代码。该对象实质上是调用它的代码的“黑匣子”。

对象的重复使用。我们可以在不同的应用程序中使用相同的对象,因为我们已经将数据及其在一个地方的处理方式进行了组合。

每个对象的独立性。如果一个对象的编码不正确并导致错误,则由于代码位于一个位置,因此很容易测试和修复。实际上,可以与应用程序的其余部分无关地测试对象。可以在大型项目中使用相同的原理,在大型项目中,可以为不同的程序员分配不同的对象。

喜欢这篇文章的可以点个赞,欢迎大家留言评论,记得关注我,每天持续更新技术干货、职场趣事、海量面试资料等等
如果你对java技术很感兴趣也可以+ qq群:907135806 交流学习,共同学习进步。
不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代

文章写道这里,欢迎完善交流。最后奉上近期整理出来的一套完整的java架构思维导图,分享给大家对照知识点参考学习。有更多JVM、Mysql、Tomcat、Spring Boot、Spring Cloud、Zookeeper、Kafka、RabbitMQ、RockerMQ、Redis、ELK、Git等Java干货加vx:ddmsiqi 领取啦

在这里插入图片描述