【问题标题】:Object Oriented Private Variable面向对象的私有变量
【发布时间】:2011-03-21 10:32:34
【问题描述】:

除了保护之外,私有方法/变量的其他用途是什么。

【问题讨论】:

  • 郑重声明,它们不能有效保护任何东西。反射能够轻松绕过“私有”说明符。
  • 你能告诉我更多关于反射的信息吗?
  • 在 600 个字符中无效 ;-) 查看 Wikipedia 文章以了解初学者:en.wikipedia.org/wiki/Reflection_(computer_science)。顺便说一句:完全破坏您的安全方案的方法(在 Java 中)是 setAccessible()

标签: oop private


【解决方案1】:

封装

隐藏对象的内部运作,使其主要用途和功能更清晰,更易于操作。

仅通过访问器/修改器方法强制访问

一个变量可能被声明为私有的,这迫使程序员使用访问器或修改器方法来代替。这些方法可以执行计算,其他检查和平衡,你可以命名它。基本上,它可以防止任何类在不使用它的访问器或修改器的情况下以独立的方式修改此变量。

一般拒绝访问

正如您所建议的,可以将变量设为私有以进行保护,以防止外部类一起篡改变量。

【讨论】:

  • 嗯,在某种程度上,我仍然认为封装与保护或隐私有关。你在隐藏它,这意味着你在保护外人根本不知道它。我想知道私有说明符是否有其他用途。
  • 从没想过那个,虽然我肯定用过它!
  • @denniss:信息隐藏被一些人用作封装的另一个术语(比较维基百科文章)。
  • 这里封装可以被认为是,IMO,隐藏数据不是为了保护或隐私(“我不信任这个类的用户”)而是为了简单(“为什么这个用户班级关心这个值是什么?”)。正如@rlb.usa 所说,目的是让课程更清晰、更简洁,而不是偷偷摸摸。
【解决方案2】:

封装成员作用域的主要目的。

可以找到原因说明here

封装是通过以下方式实现的 指定哪些类可以使用 对象的成员。结果是 每个对象暴露给任何类 某个接口——那些成员 该类可访问。原因 因为封装是为了防止 一个接口的客户端来自依赖 在实施的那些部分 可能会改变的 未来,从而允许这些变化 更容易制作,也就是说, 无需更改客户端。

【讨论】:

    猜你喜欢
    • 2017-10-31
    • 1970-01-01
    • 2016-09-08
    • 2018-08-18
    • 2012-03-02
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多