объектно-ориентированное программирование для безопасности - PullRequest
0 голосов
/ 12 марта 2019

В ООП мы можем назначать закрытые, защищенные и публичные переменным и методам. Я знаю, что у этого есть много преимуществ, но является ли безопасность одним из них? Так что посторонний человек не должен иметь доступа.

Ответы [ 2 ]

2 голосов
/ 12 марта 2019

Краткий ответ "не совсем".Данные все еще находятся в памяти, и если вы покопаетесь в отражении, вы сможете получить содержимое полей.Пометка полей и методов как приватных - это способ общения с другими программистами: «Эй, это внутренняя работа класса, она подвержена изменениям, и, пожалуйста, не трогайте ее».

Вы можете получитьЗначение частного поля с этим:

// 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));

Если это не является абсолютно необходимым, пожалуйста, не используйте этот код, и будьте предельно осторожны, если вы когда-либо используете отражение.

Более того, дажеесли поле недоступно языковой схеме, если мы говорим о безопасности, как во внешней программе, сканирующей память, пометка полей как приватных не скрывает от них данные.В конце концов .. данные должны быть где-то, верно?

0 голосов
/ 12 марта 2019

Это принцип инкапсуляции в oops, который скрывает информацию. Вы можете использовать модификаторы доступа для определения видимости классов, методов и атрибутов.

Вы реализуете этот механизм сокрытия информации, делая ваши атрибуты класса недоступными извне и предоставляя методы получения и / или установки для атрибутов, которые должны быть доступны для чтения или обновления другими классами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...