Как компиляторы выполняют сокрытие информации и инкапсуляцию? - PullRequest
0 голосов
/ 14 мая 2018

Когда я создаю определение класса Java, я могу использовать private, public, protected и другие ключевые слова для управления доступом к членам и методам:

public class Bowel{
  private Movement privatePoop = new Movement(1);
  public Movement publicPoop = new Movement(2);

  ...
}

Что компилятор делает по-другому, когда создает байт-код для метода и члена privatePoop и publicPoop? Если кто-то извне пытается получить доступ к privatePoop, как он узнает / означает, что JVM не может этого сделать?

1 Ответ

0 голосов
/ 14 мая 2018

В основном скомпилированные классы и члены помечаются как открытые, закрытые и т. Д. Это чисто синтаксическая защита: компилятор не будет компилировать доступ к закрытому члену извне класса включения. Все это вы можете обойти во время выполнения по отражению .

...