1

我遇到了一件与 Java 基础有关的有趣的事情。这是代码:

class Whoa {
  private int n;

  private void d() {
    Whoa whoa = new Whoa();
    whoa.n = 1;
  }
}

为什么n对象的领域whoa是可访问的?我的意思是,好的,我们在课堂上。但是whoa是单独的对象,我认为我们只能访问当前对象的字段。虽然我承认,如果我们有一个带有 Whoa 参数的方法:

private void b(Whoa w) {
  w.n = 20;
}

我们肯定可以访问n. 这一切都很混乱。有人可以澄清一下吗?

4

3 回答 3

6

Java 访问修饰符的重点是保护类的内部免受外来代码的影响。由于同一类的所有实例共享相同的内部代码,因此在它们之间实施访问限制几乎没有用处。

这就是 Java类级别封装的基本原理。

于 2013-09-24T10:43:13.577 回答
0

只要你在同一个班级,你就可以访问私有变量

于 2013-09-24T10:43:05.077 回答
0

对于您创建的对象“哇”的每个新实例,都会有一个“n”的实例。那个“n”只能从“哇”的实例中访问(因此是私有的)

于 2013-09-24T10:44:35.487 回答