我正在阅读Thinking in Java。关于访问的章节(私人,公共等)。这是本书的引文:
...只是因为对象的引用在类中是私有的 并不意味着其他一些对象无法公开引用 同一个对象。
然后我们被重定向到该书的在线补充,以了解别名问题。
在官方网站上有一本书的解决方案指南。但这对我来说很贵。
你能否澄清一下别名问题的含义,以便我可以更多地举例说明。
答案 0 :(得分:5)
这是一个例子
public class Foo {}
public class PrivateExample {
private Foo foo;
public PrivateExample (Foo foo) {
this.foo = foo;
}
}
public class PublicExample {
public Foo foo;
}
...
// in some method
Foo foo = new Foo();
PrivateExample privateExample = new PrivateExample(foo);
PublicExample publicExample = new PublicExample();
publicExample.foo = foo;
现在,PrivateExample
实例和PublicExample
实例都引用了同一个Foo
对象。请注意,即使该方法也引用了该对象。因此,即使您无法通过PrivateExample
实例访问它,也可以通过其他实例访问它。它不一定安全。