gpt4 book ai didi

java - 封装问题

转载 作者:行者123 更新时间:2023-11-29 05:23:55 25 4
gpt4 key购买 nike

我现在正在阅读计算机科学研究指南,我发现了这个问题的有趣答案。显然答案是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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com