Для моего обучения в университете я вынужден сделать некоторые уродливые основы java, например, работать без инкапсуляции, основной метод в одном классе и т. Д. (Я не хочу открывать дискуссию о java styleguide, я просто хочу уточнить, что я не буду писать что-то вроде этого за пределами университета)Почему доступ к частному полю запрещен?
Я наткнулся поведение, которое я не могу объяснить мой сам:
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);
}
}
Почему этот кусок кода компиляцией и работать без ошибок? Как возможно, что я могу получить доступ к частному полю? Странное поведение из-за того, что основной метод в том же классе?
Мне просто интересно, потому что я ожидал, что частный модификатор сделает поля доступными только внутри экземпляра, например, я привык к C#. – citronas
@citronas - C# ведет себя точно так же - частный модификатор относится к классу, а не к экземпляру. http://msdn.microsoft.com/en-us/library/st6sy9xe.aspx – Nate
+1 для использования отражения для получения любого значения любого класса. –