核心OOPS:封装

问题描述

昨天在一次采访中有人问我 封装如何在内部工作? 我真的很困惑,因为按照我的观点,封装很简单 "The state of a class should only be accessed through its public interface." 但是当涉及到内部工作时,我精疲力竭。因此,如果有人可以解释这将非常有帮助。

解决方法

我同意评论者的观点,要求澄清是一个好主意-好的问题甚至比好的答案要好,并允许您确保您实际上在回答他们认为的问题。

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

  • 用于将字段/方法标记为公共,私有,受保护或受包保护的内置语法和语义。
  • 编译器检查以确保不违反这些条件
  • (外部)工具可用于检测与封装相关的代码味道,例如从构造函数内部调用可重写方法。
  • (牵强一些)无法直接访问程序存储器,例如,使得C / C ++中的重新解释广播无法在Java中使用;这也保留了封装。

您可以通过询问来确保这正是他们想要的。您是指Java如何确保程序员不违反封装,也就是说,他们不通过公共接口访问对象的状态。吗?”

想到其他答案:

  • 使用有意义的注释,这些注释可通过JavaDoc在IDE中以及作为可浏览的文档轻松访问,从而使程序员能够了解类的使用方式和组成方式。
  • 实施封装的强壮的编码约定,例如将字段设置为尽可能严格的访问权限,并且仅公开那些实际上应该公开的部分。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...