class TestPrivate2 {
private int n;
}
public class TestPrivate {
private int n;
public void accessOtherPrivate(TestPrivate other) {
other.n = 10;// can use other class's private field,why??????????
System.out.println(other.n);
}
public void accessOtherPrivate(TestPrivate2 other) {
// other.n = 10;//can not access,i konw
// System.out.println(other.n);//
}
public static void main(String[] args) {
new TestPrivate().accessOtherPrivate(new TestPrivate());
}
}
看看TestPrivate的方法:accessOtherPrivate。为什么它可以使用其他类的私有字段 为什么呢?
答案 0 :(得分:3)
它不会访问另一个类的字段。它访问同一类的另一个对象的私有字段。
在Java中,您无法访问其他类的私有字段,因为您不应该知道它们如何在内部工作。但您仍然可以访问同一类中其他对象的私有字段。
答案 1 :(得分:2)
private
字段对于特定实例是私有的,这是一种常见的误解。不。它对那个特定的class
是私有的。
来自Oracle Access Control Tutorial:
在会员级别,您也可以使用公共修饰符或否 修饰符(package-private)与顶级类一样,并且与 同样的意思。对于会员,还有两个额外的访问权限 修饰符:私有和受保护。 私有修饰符指定 该成员只能在自己的类中访问。
答案 2 :(得分:0)
因为他们是同一个班级。对象可以引用其自己类的私有字段。
顺便说一下,你的TestPrivate2
课程只是让问题混淆,而且不相关。
答案 3 :(得分:0)
public void accessOtherPrivate(TestPrivate other)
您正在同一个类中访问TestPrivate的私有字段,而不是另一个类,这就是它能够访问n的原因。