【Java基础面试十四】、 封装的目的是什么,为什么要有封装?

news/2024/7/24 8:05:34 标签: 面试, java, 开发语言

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。

面试官: 封装的目的是什么,为什么要有封装?

参考答案:

封装是面向对象编程语言对客观世界的模拟,在客观世界里,对象的状态信息都被隐藏在对象内部,外界无法直接操作和修改。对一个类或对象实现良好的封装,可以实现以下目的:

  • 隐藏类的实现细节;

  • 让使用者只能通过事先预定的方法来访问数据,从而可以在该方法里加入控制逻辑,限制对成员变量的不合理访问;

  • 可进行数据检查,从而有利于保证对象信息的完整性;

  • 便于修改,提高代码的可维护性。

扩展阅读

为了实现良好的封装,需要从两个方面考虑:

  • 将对象的成员变量和实现细节隐藏起来,不允许外部直接访问;

  • 把方法暴露出来,让方法来控制对这些成员变量进行安全的访问和操作。

封装实际上有两个方面的含义:把该隐藏的隐藏起来,把该暴露的暴露出来。这两个方面都需要通过使用Java提供的访问控制符来实现。


http://www.niftyadmin.cn/n/5097998.html

相关文章

AFL模糊测试+GCOV覆盖率分析

安全之安全(security)博客目录导读 覆盖率分析汇总 目录 一、代码示例 二、afl-cov工具下载 三、编译带覆盖率的版本并启动afl-cov 四、AFL编译插桩并运行afl-fuzz 五、结果查看 AFL相关详见AFL安全漏洞挖掘 GCOV相关详见GCOV覆盖率分析 现将两者结合,即进…

法国数字医疗公司Tilak Healthcare完成1000万欧元融资

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,总部位于法国巴黎的治疗眼科的数字医疗公司Tilak Healthcare今日宣布已完成1000万欧元融资。 本轮融资完成后,Tilak Healthcare的融资总额已达到2200万欧元,本轮融资由Elai…

JS如何判断对象为空?以及各自的缺点。

JS如何判断对象为空?以及各自的缺点。 Object.keys() 通过 Object.keys() 来获取对象的键进行判断。 function isEmpty(obj) {return Object.keys(obj).length 0; }console.log(isEmpty({})); // true console.log(isEmpty({ a: 1 })); // false缺点&#xff1a…

封装的方法固定的参数,特殊环境下需要多带参数

组件封装的时候某些方法回传出去某些参数,但是特殊条件下需要将其他参数也一并带入方法中使用 比如图片中的方法就可以实现不影响自带的参数,也不影响我们需要多带的参数

C-Net:用于乳腺超声图像分割的具有全局指导和细化残差的级联卷积神经网络

C-Net 期刊分析摘要贡献方法整体框架1. Bidirectional attention guidance network (BAGNet)2. Refinement residual network (RFNet) 实验1. 对比实验2. 消融实验 可借鉴参考 期刊分析 期刊名: Computer Methods and Programs in Biomedicine 期刊信息&#xff1a…

pc微信39223部分算法call偏移

WechatWin.dll 基址:78FD0000 MD5_Init_call 7AF48C80 | 56 | push esi | 7AF48C81 | 8B7424 08 | mov esi,dword ptr ss:[esp0x8] | 7AF48C85 | 6A 4C | push 0x4C …

多媒体应用设计师 第9章 信息安全性知识

1.信息安全性基本概念 2.计算机病毒防范 2.1.计算机病毒的分类与识别 病毒特点:隐蔽性,传染性,破坏性,潜伏性 计算机病毒构成:感染标志(病毒签名),引导模块,感染模块,破坏模块(表现模块) 病…

SystemC入门学习-第8章 测试平台的编写

之前的章节,一直把重点放在用SystemC来描述硬件电路上,即如何编写SystemC 的RTL。本章的注意力集中在验证和编写测试平台上。 重点包括: 如何生成时钟信号和激励波形如何编写有响应能力的测试平台如何记录仿真结果 8.1 编写测试平台 测试平…