当我创建Java类定义时,我可以使用private
,public
,protected
和其他关键字来控制成员和方法的访问方式:
public class Bowel{
private Movement privatePoop = new Movement(1);
public Movement publicPoop = new Movement(2);
...
}
当编译器为privatePoop
和publicPoop
方法和成员创建字节码时,编译器的作用有何不同?如果有人在外部尝试访问privatePoop
,它如何知道/表示JVM他们不应该这样做?
答案 0 :(得分:1)
基本上,已编译的类和成员被标记为public,private等。它是纯粹的语法保护:编译器不会从封闭类外部编译对私有成员的访问。所有这一切都可以在运行时绕过reflection。