当前位置: 首页 > 知识库问答 >
问题:

封装的概念[复制]

沃皓轩
2023-03-14

封装的概念:如果我们可以间接改变私有变量的值(通过setters和getters),那么私有变量是如何安全的,它是如何隐藏的?有人能详细解释一下吗...

共有2个答案

幸乐湛
2023-03-14

看看这个答案。本质上,例如,使用关键字private可以防止类中的字段被外部使用。它隐藏与该private关键字关联的类中的数据。

仲君昊
2023-03-14

你是对的。如果字段通过getters和setters公开,则不封装它。有多少人不理解这一点很烦人,所以你感到困惑也就不足为奇了。

 类似资料:
  • 问题内容: 美好的一天! 我正在阅读一本有关封装的Java书,其中提到了getter和setter方法。 我读过要隐藏属性,我必须将实例变量标记为 “ PRIVATE” ,并设置 “ PUBLIC” 方法来访问数据。因此,我尝试制作类似但并非常规的代码,如下所示: 上面的代码是否因为我直接分配变量而公开了变量?我该如何做得更好?如果改用常规方法并在另一个类上分配值会更好吗?“隐藏数据”是什么意思?

  • 密封类用来限制类的继承关系,这意味着密封类的子类数量是固定的。看起来就像是枚举那样,当你想在一个密封类的子类中寻找一个指定的类的时候,你可以事先知道所有的子类。不同之处在于枚举的实例是唯一的,而密封类可以有很多实例,它们可以有不同的状态。 我们可以实现,比如类似Scala中的Option类:这种类型可以防止null的使用,当对象包含一个值时返回Some类,当对象为空时则返回None: sealed

  • 在Java1.7之前,我很高兴地使用接口来实现OOPs概念封装。意思是如果我想对最终用户隐藏实现,那么我将只与他们共享接口,他们可以使用该接口调用我的API,例如EJB。 在Java1.7之前,上面的都是有效的,现在在Java8中,我可以用和关键字在接口中编写方法的实现,例如: 这在Java1.8中是完全有效的。 现在我的问题是: 顺便说一句,我读过Java文档,其中指出: 默认方法使您可以向库的

  • 英文原文:http://emberjs.com/guides/concepts/core-concepts/ 要开始学习Ember.js,首先要了解一些核心概念。 Ember.js的设计目标是能帮助广大开发者构建能与本地应用相颦美的大型Web应用。要实现这个目标需要新的工具和新的概念。我们花了很大的功夫从Cocoa、Smalltalk等本地应用框架引入了其优秀的理念。 然而,记住Web的特殊性非常

  • 复数的引入,追根求源,最初是为了求解没有实数根的二次方程。例如求解 这个由实数组成的方程,显然没有实数根。所以复数集可以看成实数集合的一个自然扩充。 首先引入一个“新数” i。使它满足 也就是说 i 是 的解。 我们再给复数定义:形如 z=a+bi的数就是复数。其中 a和b分别叫做复数 z 的实部和虚部。 注意,b才是虚部, bi不是虚部。 记作:a=Re(z),b=Im(z) 复数z=a+bi的

  • IOStream对socket读写进行了封装,分别提供读、写缓冲区实现对socket的异步读写。当socket被accept之后HTTPServer的_handle_connection会被回调并初始化IOStream对象,进一步通过IOStream提供的功能接口完成socket的读写。文章接下来将关注IOStream实现读写的细节。 IOStream的初始化 IOStream初始化过程中主要完成