Dlaczego dostęp do pola prywatnego nie jest zabroniony?

W przypadku moich studiów na uniwersytecie zmuszony jestem do zrobienia jakichś brzydkich podstaw java, takich jak praca bez hermetyzacji, główna metoda w tej samej klasie itp. (Nie chcę otwierać dyskusji na temat stylu Java, chcę tylko wyjaśnić, że nie napisałbym czegoś takiego poza uniwersytetem)

Natknąłem się na zachowanie, którego nie potrafię wyjaśnić samemu sobie:

public class Person {
  // fields
  private int age;

  public static void main(String[] args) {
    Person foo1 = new Person();
    foo1.age = 40;
    System.out.println(foo1.age);
  }
}

Dlaczego ten fragment kodu kompiluje się i działa bez błędów? Jak to możliwe, że mogę uzyskać dostęp do pola prywatnego? Dziwne zachowanie z powodu posiadania głównej metody w tej samej klasie?

questionAnswers(6)

yourAnswerToTheQuestion