问题描述
昨天在一次采访中有人问我
封装如何在内部工作?
我真的很困惑,因为按照我的观点,封装很简单
"The state of a class should only be accessed through its public interface."
但是当涉及到内部工作时,我精疲力竭。因此,如果有人可以解释这将非常有帮助。
解决方法
我同意评论者的观点,要求澄清是一个好主意-好的问题甚至比好的答案要好,并允许您确保您实际上在回答他们认为的问题。
在这种情况下,我假设他们想让您解释 Java如何确保程序员不违反封装。这涉及到
- 用于将字段/方法标记为公共,私有,受保护或受包保护的内置语法和语义。
- 编译器检查以确保不违反这些条件
- (外部)工具可用于检测与封装相关的代码味道,例如从构造函数内部调用可重写方法。
- (牵强一些)无法直接访问程序存储器,例如,使得C / C ++中的重新解释广播无法在Java中使用;这也保留了封装。
您可以通过询问来确保这正是他们想要的。您是指Java如何确保程序员不违反封装,也就是说,他们不通过公共接口访问对象的状态。吗?”
想到其他答案:
- 使用有意义的注释,这些注释可通过JavaDoc在IDE中以及作为可浏览的文档轻松访问,从而使程序员能够了解类的使用方式和组成方式。
- 实施封装的强壮的编码约定,例如将字段设置为尽可能严格的访问权限,并且仅公开那些实际上应该公开的部分。