当前位置: 首页 > 面试题库 >

当我能够使用setter方法更改属性值时,封装的用途是什么?

澹台志诚
2023-03-14
问题内容

我试图了解很多次,但是我却不明白。

封装是一种将类中的字段设为私有并通过公共方法提供对字段的访问的技术。如果某个字段被声明为私有,那么该类之外的任何人都无法访问该字段,从而将这些字段隐藏在该类中。

我们如何通过setter方法更改字段的值?我们如何防止直接访问这些字段?封装的真正用途是什么?


问题答案:

假设您age有财产。

用户可以输入的值-10,尽管该值是有效数字,但它是无效年龄。setter方法可能具有允许您捕捉此类事情的逻辑。

另一种情况是拥有该age字段,但将其隐藏。您还可以有一个“出生日期”字段,在设置过程中,您将像这样:

...
private int age
private Date dob

...
public void setDateOfBirth(Date dob)
{
    this.dob = dob;
    age = ... //some logic to calculate the age from the Date of Birth.
}


 类似资料:
  • 我试着理解很多次,但我没有理解这一点。 封装是使类中的字段私有并通过公共方法提供对字段的访问的技术。如果一个字段被声明为private,则类外的任何人都无法访问它,从而隐藏类内的字段。 我们如何通过setter方法改变字段的值?我们如何防止直接访问字段?封装的真正用途是什么?

  • 这个豆子“状态”: 使用ajax“成功”回调通过网络发送: 这里需要注释@JsonProperty吗?使用它有什么好处?我想我可以删除这个注释而不会产生任何副作用。 正在阅读关于https://github.com/FasterXML/jackson-annotations/wiki/Jackson-Annotations我不知道什么时候需要用这个?

  • 据我所知,封装对外部人员隐藏了您的数据成员,并且只允许它使用相同类的方法访问。因此他们无法向外部人员显示您的个人数据。遵循这是真的, 在这里,您的金额变量不会与使用private的外部用户共享,他们也不知道您使用的变量名称。 但在类似的情况下,我们还提供了访问它们的getter/setter,那么封装如何能够从外部安全地进行呢? 这意味着getter或setter方法很可能具有相同的模式,而局外人

  • 问题内容: 我只想知道 到底是 什么 意思 ?甚至在SO上也没有在官方文档中找到任何解释。 如果您能提供一些例子,我将非常高兴。 问题答案: 请参阅PEP 366 和导入系统参考文档: 提议的主要更改是引入了新的模块级别属性。如果存在,则相对导入将基于此属性而非模块属性。 和 * 应该设置模块的属性。它的值必须是字符串,但可以与其值相同。如果该属性设置为或丢失,则导入系统将使用更合适的值填充该属性

  • 本文向大家介绍JavaScript中.stack属性的用途是什么?,包括了JavaScript中.stack属性的用途是什么?的使用技巧和注意事项,需要的朋友参考一下 Error对象的stack属性提供了有关跟踪哪些函数,以什么顺序,从哪个行和文件以及使用什么参数调用的跟踪。堆栈字符串从最近的调用继续到较早的调用,并返回到原始的全局范围调用。它类似于Java中的堆栈跟踪。 示例 输出结果 这将给出

  • 问题内容: 我正在编写一个API解析Twitter机器人,对OOP来说是个新手。我有一些依赖于全局变量的现有Python代码,并认为我可以借此机会学习。 我有以下Team类,这些类在解析API时会更新,并且希望在类属性更改时能够调用完全不相关的(外部)方法。 对于现有实例,何时更改,我希望调用以下方法(伪代码): 两件事情 - 一旦检测到属性已更改,如何从班级内部调用? 我可以从任何地方访问对象的