java - 编译器如何进行信息隐藏和封装?

标签 java encapsulation information-hiding

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

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

  ...
}

编译器在为 privatePooppublicPoop 方法和成员创建字节码时有何不同?如果有人从外部尝试访问 privatePoop,它如何知道/向 JVM 表明他们不应该能够执行此操作?

最佳答案

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

关于java - 编译器如何进行信息隐藏和封装?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50336668/

相关文章:

java - 阻止 Blob URL 过期

java - 总是同一个线程获得 CPU 时间

java - 封装的指标是什么?

java - 为什么 getName() 返回 null?

JavaScript 与 WebComponents/ShadowDOM 封装

仅包含私有(private)成员的 Java 类

c - 信息隐藏如何阻止函数访问单个数组元素?

java - 集合上的 QueryDSL -> 字符串列表的任何()

JavaScript - 如何从 eval 脚本中隐藏全局范围

java - Jax-b 文字 xml 序列化