数据封装

数据封装是使用对象编程时需要掌握的最重要的概念。在面向对象编程中,数据封装涉及:...

数据封装是使用对象编程时需要掌握的最重要的概念。在面向对象编程中,数据封装涉及:

Hands typing on laptop
  • 在一个地方合并数据和如何操作数据。这是通过对象的状态(私有字段)和行为(公共方法)实现的。
  • 仅允许通过行为访问和修改对象的状态。然后可以严格控制对象状态中包含的值。
  • 隐藏对象工作方式的详细信息。外部世界可以访问对象的唯一部分是其行为。这些行为中发生的事情以及状态的存储方式都隐藏在视图中。

强制数据封装

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

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

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

  • 构造函数方法。通过调用构造函数方法创建对象的新实例。可以将值传递给构造函数方法以设置对象的初始状态。有两件有趣的事情值得注意。首先,Java并不坚持每个对象都有一个构造函数方法。如果不存在任何方法,则对象的状态使用私有字段的默认值。其次,可以存在多个构造函数方法。这些方法在传递给它们的值以及它们如何设置对象的初始状态方面会有所不同。
  • 访问器方法。对于每个私有字段,我们可以创建一个将返回其值的公共方法。
  • 变异方法。对于每个私有字段,我们可以创建一个公共方法来设置其值。如果希望私有字段为只读,请不要为其创建mutator方法。

例如,我们可以将person对象设计为具有两个构造函数方法。第一个不接受任何值,只是将对象设置为具有默认状态(即,名字、姓氏和地址将是空字符串)。第二个参数根据传递给它的值设置名字和姓氏的初始值。我们还可以创建三个名为getFirstName、getLastName和getAddress的访问器方法,它们只返回相应私有字段的值。创建一个名为setAddress的mutator字段,该字段将设置地址私有字段的值。

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

数据封装的原因

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

  • 使对象的状态保持合法。通过使用公共方法强制修改对象的私有字段,我们可以将代码添加到mutator或constructor方法中,以确保该值合法。例如,假设person对象还存储用户名作为其状态的一部分。用户名用于登录我们正在构建的Java应用程序,但长度限制为10个字符。我们可以做的是在用户名的mutator方法中添加代码,确保用户名的值不超过10个字符。
  • 我们可以更改对象的实现。只要我们保持公共方法不变,我们就可以在不破坏使用它的代码的情况下更改对象的工作方式。对象本质上是调用它的代码的“黑盒”。
  • 对象的重复使用。我们可以在不同的应用程序中使用相同的对象,因为我们在一个地方组合了数据及其操作方式。
  • 每个对象的独立性。如果对象编码不正确并导致错误,那么测试和修复很容易,因为代码位于一个位置。事实上,对象可以独立于应用程序的其余部分进行测试。同样的原则也可以用于大型项目,在这些项目中,不同的程序员可以被指派创建不同的对象。

  • 发表于 2021-10-05 14:03
  • 阅读 ( 123 )
  • 分类:IT

你可能感兴趣的文章

封装(encapsulation)和脱胶囊(decapsulation)的区别

关键区别-封装与去封装 数据对每个组织都很重要。因此,有必要以最少的时间将数据轻松地发送到另一个位置。数据可以通过网络发送到目的地。网络是一组相互连接的设备,如计算机、打印机,用于共享资源。当主机数量...

  • 发布于 2020-10-19 15:30
  • 阅读 ( 485 )

数据隐藏(data hiding)和封装(encapsulation)的区别

数据隐藏(data hiding)和封装(encapsulation)的区别 面向对象程序设计(OOP)是程序设计的一个主要范式。它有助于使用对象开发程序或软件。对象是使用蓝图创建的。它被称为一个类。类由应该包含在对象中的属性和行为组成。类...

  • 发布于 2020-10-24 02:51
  • 阅读 ( 451 )

如何使用对象封装保持代码整洁

...受控方式访问和更改变量的函数。设置程序可以对更改的数据设置限制。而且getter可以改变检索到的数据。 ...

  • 发布于 2021-03-30 05:01
  • 阅读 ( 285 )

极客学校:学习Windows7–远程访问

...因为它们是通过互联网“隧道”的。每个人都能看到你的数据吗?不,他们不能,这是因为我们加密通过VPN连接发送的数据,因此被称为虚拟“专用”网络。用于封装和加密通过网络发送的数据的协议由您决定,Windows 7支持以下...

  • 发布于 2021-04-12 00:06
  • 阅读 ( 175 )

pptp公司(pptp)和l2tp型(l2tp)的区别

...务提供商(ISP)远程访问公司网络。PPTP工作在OSI模型的数据链路层。 网络协议种类繁多,PPTP通过IP封装和传输。如果原始协议是IP,则其数据包将作为加密信息跟随PPTP数据包。正如所料,PPTP源于通用路由封装协议(GRE)和点到...

  • 发布于 2021-06-23 04:05
  • 阅读 ( 180 )

ipsec协议(ipsec)和gre考试(gre)的区别

...络,特别是那些使用因特网的网络,利用通信协议来传输数据包,这些数据包将由网络的不同用户共享。数据包包含控制信息,该信息提供数据传送、错误检测和用户数据或有效负载所需的信息。 一个这样的包是因特网协议(IP...

  • 发布于 2021-06-23 21:10
  • 阅读 ( 201 )

抽象(abstraction)和封装(encapsulation)的区别

...raction)? 抽象是一个基本的OOP概念,它只关注对象的相关数据,隐藏所有不相关的细节,这些细节可能是通用的,也可能不是专用的行为。它隐藏了背景细节,强调了减少复杂性和提高效率的要点。基本上,抽象是管理复杂性的...

  • 发布于 2021-06-25 03:41
  • 阅读 ( 724 )

数据抽象(data abstraction)和封装(encapsulation)的区别

数据抽象和封装之间的主要区别在于,数据抽象隐藏了实现细节,只向用户显示功能,以降低代码复杂性,而封装将数据和方法绑定或包装到一个单元中,并隐藏细节以保护数据。 面向对象编程(OOP)有助于将真实世界的场景...

  • 发布于 2021-06-30 17:01
  • 阅读 ( 1227 )

数据隐藏(data hiding)和抽象(abstraction)的区别

数据隐藏和抽象的主要区别在于,数据隐藏有助于保护数据,而抽象有助于隐藏系统的复杂性。 面向对象编程(Object-Oriented Programming,OOP)是一种比使用结构化编程(structured Programming)等其他范式更容易为现实世界场景创建解...

  • 发布于 2021-07-01 13:14
  • 阅读 ( 319 )

封装(encapsulation)和c语言中的抽象#(abstraction in c#)的区别

C语言中封装和抽象的主要区别在于,封装将数据和方法包装成一个单元,而抽象则隐藏了实现细节,只向用户显示功能。 C#是微软开发的一种高级通用编程语言。它是基于.NET框架构建的。框架提供了开发和部署应用程序的环境...

  • 发布于 2021-07-01 14:04
  • 阅读 ( 381 )
3390653ff
3390653ff

0 篇文章

相关推荐