【发布时间】:2015-02-13 11:06:01
【问题描述】:
当我编写以下代码时,编译器如何不报错?
public class MyClass
{
private int count;
public MyClass(int x){
this.count=x;
}
public void testPrivate(MyClass o){
System.out.println(o.count);
}
}
即使它是编写testPrivate 的同一类的实例,它不应该在System.out.println(o.count) 处给出编译错误吗?毕竟,我正在尝试直接访问私有变量。
代码甚至运行良好。
【问题讨论】:
-
Class MyClass知道count变量,所以没问题
-
它是类私有的,而不是实例私有的。 Java 不会试图阻止你的左手碰到你的右手。 ;)
-
通过 Eclipse 或 IDEA hashCode 和 equals 方法生成,它们总是这样
-
@PeterLawrey 是的,但我的印象是,如果我什至尝试访问私有,编译器会打我的头;但它是班级私有的,这是有道理的。谢谢
-
@KanwaljeetSingh 令人惊讶的是,如果您在嵌套类中有私有字段/方法/构造函数,您仍然可以在同一个外部类的另一个嵌套类中访问它。