用于访问其他类的私有字段的类

时间:2013-10-10 17:52:46

标签: java

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。为什么它可以使用其他类的私有字段 为什么呢?

4 个答案:

答案 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的原因。