核心 OOPS:封装

Core OOPS : Encapsulation

昨天在一次采访中有人问我 封装在内部如何工作? 我真的很困惑,因为按照我的说法,封装很简单 "The state of a class should only be accessed through its public interface." 但是当涉及到内部工作时,我 运行 满分 words.So 如果有人能解释它会很有帮助。

我同意评论者的意见,要求澄清是一个好主意 - 好问题甚至比好答案更好,并且让你确保你实际上是在回答他们认为他们在问的问题。

在这种情况下,我假设他们希望您解释 如何 Java 确保程序员不违反封装。这涉及

  • built-in 用于将字段/方法标记为 public、私有、受保护或 package-protected.
  • 的语法和语义
  • 编译器检查以确保不违反这些
  • (外部)工具可用于检测与封装相关的代码异味,例如从构造函数中调用可重写的方法。
  • (更多 far-fetched)无法直接访问程序内存,例如,reinterpret-casts 无法在 Java 中找到 C / C++ 中的内容;这也保留了封装。

您可以通过询问 “您指的是 Java 如何确保程序员不违反封装,即他们不访问除了通过 public 界面之外的对象状态?"

想到其他答案:

  • 使用有意义的注释,可以通过 JavaDoc 轻松访问 in-IDE 和可浏览的文档,让程序员了解 类 的使用和组合方式。
  • 强制封装的强大编码约定,例如将字段设置为尽可能限制访问,并且只public那些实际上应该是public的部分。