当我创建Java类定义时,我可以使用private
、public
、protected
等关键字来控制成员和方法的使用方式访问:
public class Bowel{
private Movement privatePoop = new Movement(1);
public Movement publicPoop = new Movement(2);
...
}
编译器在为 privatePoop
和 publicPoop
方法和成员创建字节码时有何不同?如果有人从外部尝试访问 privatePoop
,它如何知道/向 JVM 表明他们不应该能够执行此操作?
最佳答案
基本上,编译的类和成员被标记为公共(public)、私有(private)等。这是纯粹的语法保护:编译器不会编译从封闭类外部对私有(private)成员的访问。所有这些你都可以在运行时通过 reflection 绕过。 。
关于java - 编译器如何进行信息隐藏和封装?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50336668/