- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
正在学习Java,来到了本书的封装部分。
对于数据“隐藏”,封装的重点是保护原始变量不被程序的任何部分更改吗?
setter 是否允许您仅在真正需要时才允许更改变量?就像在类本身中设置的条件一样。
举个例子。我有一个“银行余额”,如果我要买东西,我想看看余额,但还没有“收费”,所以这个变量在收费完成后才会改变,从而满足银行为真实余额设定的条件。
这是一个非常广泛的例子,我意识到我可以这样编码,我只是作为一个例子问。
最佳答案
区别不在于基元和对象,而是私有(private)和公共(public)状态。例如,对于电视,您关心音量设置和它打开的 channel ,但用户不需要知道(也不应该关心)发送到放大器和 PLL 芯片的实际 I2C 命令。
封装意味着明确定义哪些项目是面向公众的,然后隐藏其余项目,这样一来,实现者就可以更改完成工作的确切方式,这样客户就不会搞砸封装服务的操作。
例如,Setter 的存在使对象可以控制其状态如何以及是否更新。例如,方法 TV#setChannel()
可能会更改电视上的 channel
字段,但它还会执行一些其他操作来更改调谐器的频率设置,或者在屏幕上显示新 channel 等等。客户端代码不应该担心(或者有时甚至不知道)任何这些。
在银行转帐的情况下,还有许多其他注意事项,因为通常必须同时进行多项操作。需要的不仅仅是对象级封装,但防止客户端代码直接破坏余额是所需解决方案的一部分。
关于java - 封装广义理论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21445624/
这是我感兴趣的测试: http://www.itl.nist.gov/div898/handbook/eda/section3/eda35h3.htm 如何将这段代码改编成接受数值向量并返回指定要删除
我使用 TensorFlow 1.12 基于 Material 进行语义(图像)分割。使用多项式交叉熵损失函数,这会产生不错的结果,尤其是考虑到我使用的训练数据量稀疏,mIoU 为 0.44: 然而,
AFAIK,在 Hindley-Milner 类型系统中使用的统一可以通过在构造函数位置允许类型变量并在这种情况下放宽 arity 约束来推广以统一更高级的类型: f a ~ T a1 b1 f ~
在阅读 article 时在 Javascript 中实现通用 curry 时,我偶然发现了这段代码。 function curry(fn) { return (...xs) => { i
我想使用 C++14 中引入的广义 lambda 捕获(有关解释,请参阅 Move capture in lambda)。但是,我的代码的其余部分是 C++11 友好的。我想按照以下方式做一些事情 #
我正在尝试实现 this paper 中介绍的广义 Hough 变换在 MATLAB 中。我也试过使用 this document理解算法。我一直在研究如何计算梯度角以找到要在 R 表中使用的 Φ。
假设我们有这样一段代码: std::vector> tasks; 然后我们添加这样的任务: tasks.push_back([]() { // ... } 这行得通。但现在我们要添加该任务:
问题:为什么会打印出以下内容: ChildB___Parent of ChildB ChildB___Parent of ChildB 而不是我认为它应该打印出来的: ChildA___Parent
W3C 推荐 RDF 1.1 概念和抽象语法 defines多么广义 RDF 三元组 是(即,一个非标准三元组,其中每个主语/谓语/宾语都可以是 IRI/bnode/文字)。 关于它的可能用途,它给出
我是一名优秀的程序员,十分优秀!