Краткий ответ "не совсем".Данные все еще находятся в памяти, и если вы покопаетесь в отражении, вы сможете получить содержимое полей.Пометка полей и методов как приватных - это способ общения с другими программистами: «Эй, это внутренняя работа класса, она подвержена изменениям, и, пожалуйста, не трогайте ее».
Вы можете получитьЗначение частного поля с этим:
// suppose we have a class
Person person = new Person("John");
// Field is from java.lang.reflect.Field
Field nameField = Person.class.getDeclaredField("name");
// tell Java to ignore the private modifier
nameField.setAccessible(true);
// now you can "steal" the private field
System.out.println(nameField.get(person));
Если это не является абсолютно необходимым, пожалуйста, не используйте этот код, и будьте предельно осторожны, если вы когда-либо используете отражение.
Более того, дажеесли поле недоступно языковой схеме, если мы говорим о безопасности, как во внешней программе, сканирующей память, пометка полей как приватных не скрывает от них данные.В конце концов .. данные должны быть где-то, верно?