В приведенном ниже коде:
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 в качестве аргумента, я могу получить доступ к частной переменной экземпляра p2 непосредственно внутри метода вызова, который был вызван для экземпляра p1. Почему это не вызывает ошибку времени компиляции? Несмотря на то, что p2 является экземпляром класса Person, метод вызывается для p1, а не для p2, и, следовательно, только частные переменные p1 должны быть доступны напрямую. Просьба уточнить.