【发布时间】: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