В кода по-долу:
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);
}
}
Когато извикам метода "invoke" на екземпляр p1 и предам p2 като аргумент, мога да осъществя достъп до променливата на частния екземпляр на p2 директно в метода за извикване, който беше извикан на екземпляра p1. Защо това не хвърля грешка по време на компилиране? Въпреки че p2 е екземпляр на клас Person, но методът се извиква на p1, а не на p2 и следователно само частните променливи на p1 трябва да бъдат директно достъпни. Моля, пояснете.