【问题标题】:Preserving Encapsulation保持封装
【发布时间】:2014-11-29 02:54:35
【问题描述】:

为了保持对象的封装性,我们将执行以下所有操作,除了 哪一个?

A) 将实例数据设为私有

B) 在类中定义访问和操作实例数据的方法

C) 公开类的方法

D) 使类最终化

E) 以上所有都保留封装

当我看到这个问题时,我认为答案是 C,因为它说要公开 the 方法。这意味着如果方法是私有的,它们将被公开,因此不保留封装。然而答案是D,原因是:保留字“final”用于控制继承,与封装无关。我不明白这种解释有什么意义,因为使以前私有的方法现在公开不会保留封装。谁能解释一下为什么正确答案是 D?

【问题讨论】:

  • 封装只指变量只能通过方法访问,而不是直接访问。因此,A和B是必需的。请注意,受保护的实例数据也可以使用。 D 很傻 - 所做的只是使该类不可子类化。您可以轻松地创建一个不封装对象的最终类。如果有人告诉你这是正确的答案......他们错了。
  • 我不认为这是一个很好的问题(你指的是那个,不是你的),“正确”的答案更糟糕。
  • @SteveB。问题是哪一个是正确的。但是,我认为这仍然是一个糟糕的问题。
  • 这个问题无法回答。如果 A、B、C 或 D 中的任何一个为假,则 E 也是假的。所以要么零答案是错误的,要么两个(或maore)是错误的。但是问题说要识别 single 错误答案。这在逻辑上是不可能的。
  • 将其与@Steve B 的 cmets 结合起来,我们可以得出的唯一结论是,这是一个非常糟糕的问题。

标签: java


【解决方案1】:

如前所述,E 和 D 冲突。 D 是正确的(我们不会这样做)。 根据 E:我认为选择与问题无关(这不是“我们不会做上述所有事情,以保持封装”,而是相反 - “以上所有 - 保持封装”这是错误的而不是与问题相关,因此 D 是正确的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 2012-10-23
    相关资源
    最近更新 更多