核心 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的部分。
昨天在一次采访中有人问我
封装在内部如何工作?
我真的很困惑,因为按照我的说法,封装很简单
"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的部分。