java - 封装问题

标签 java encapsulation

我现在正在阅读计算机科学研究指南,我发现了这个问题的有趣答案。显然答案是E,但由于封装我不同意。为什么答案是 E 而不是 C?

A class Particle has a private field double velocity and public methods double getVelocity() and void setVelocity(double v). It also has a method public void hit(Particle p) { < Missing statements > }

Which of the following could replace < Missing statements > in hit to make it compile with no errors?

我.

 double v = getVelocity();
  setVelocity(p.getVelocity());
  p.setVelocity(v);

二。

  double v = velocity;
  velocity = p.getVelocity();
  p.setVelocity(v);

三。

  double v = velocity;
  velocity = p.velocity();
  p.velocity = v;

一个。我只是

B.仅二

C.一、二

D.二、三

E I、II 和 III

最佳答案

封装是一种重要的工具,它允许类成为唯一负责其实例状态的类。然而,因为这是一个 Particle 操纵同一个类的另一个实例的字段,它可以访问另一个实例的所有方法和字段(包括 private 方法和字段),并且典型的关注点封装不适用。

类似的情况发生在 equals 方法实现中,其中一个类的实例通常直接将其字段与同一类的另一个实例的字段进行比较。

(这假定在 III 中对 velocity() 的引用意味着 getVelocity();否则,它可能是一个编译错误。)

关于java - 封装问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23483201/

相关文章:

java - Gradle:从子项目复制 application.properties 文件

java - 我是否也应该将集合封装在 setter 中?

javascript - 封装在 Javascript 中

Java EE : Can't create ear project in eclipse using Tomee

java - RxJava——单线程异步处理

java - 检查@XmlElement是否有name属性

java - 封装 JDBC 结果集

java - 如何将 github 存储库配置为 spring 云服务器的配置存储库?

java - 封装可执行文件

oop - 迭代具有不同属性的子类