-1
在下面的代码:为什么我能够从在同一对象的另一个实例上调用的方法访问一个实例的私有实例变量?
class Person {
private String name;
private int x = 5;
public Person(String name) {
this.name = name;
}
public void invoke(Person p) {
System.out.println(p.name);
}
}
class YU {
public static void main(String args[]) {
Person p1 = new Person("P1");
Person p2 = new Person("P2");
p1.invoke(p2);
}
}
当我调用该方法的实例p1“调用”,并通过P2作为参数,我能够直接访问其上调用invoke方法内部P2的私有实例变量实例p1。为什么这不会引发编译时错误?尽管p2是Person类的一个实例,但是该方法在p1上调用,而不是在p2上调用,因此只应该可以直接访问p1的私有变量。请澄清。
在寻求帮助时,请花时间合理地设置代码的格式。 –