编译器如何执行信息隐藏和封装?

时间:2018-05-14 18:20:15

标签: java encapsulation information-hiding

当我创建Java类定义时,我可以使用privatepublicprotected和其他关键字来控制成员和方法的访问方式:

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

  ...
}

当编译器为privatePooppublicPoop方法和成员创建字节码时,编译器的作用有何不同?如果有人在外部尝试访问privatePoop,它如何知道/表示JVM他们不应该这样做?

1 个答案:

答案 0 :(得分:1)

基本上,已编译的类和成员被标记为public,private等。它是纯粹的语法保护:编译器不会从封闭类外部编译对私有成员的访问。所有这一切都可以在运行时绕过reflection