私人成员在Java中真的更"安全"吗?

pai*_*lee 15 java oop

学习Java我有时被教导使用private访问修饰符,以免将"敏感信息"暴露给其​​他类,好像这可能会打开一个合法的安全漏洞.但是我从来没有遇到过限制成员可见性不仅仅是以面向对象的方式建模程序的便利的情况.

privateJava类中的字段和函数实际上是否比其他类更"安全"?


编辑 - 汇编最佳答案.

为什么private不代表"安全":

  • 反编译器允许静态查看字节码
  • 反射库允许运行时访问私有成员

有什么private好处:

  • 由于强制方法级访问而导致的代码可维护性
  • 隐藏实现细节的代码模块化

Jim*_*ley 8

我从来没有听说过 - 在任何严重意义上 - 作为一个安全问题.我的意思是,反编译工作.您可以使用它们来弄清楚字节码内部发生了什么.

private成员是维护问题.如果我只给你方法级访问我的内部,那么我唯一的责任是确保我的API方法继续工作.只要我的方法继续返回s(例如),我就不会在内部使用a Double和a .BigDecimalDouble