尽管我已经学习了很多关于封装的知识,但它是关于隐藏数据以防止被操纵。为此,我们声明了私有变量,这样就不能从类外访问它。但我们可以使用setter getter方法在类外实现或访问它们。因此,如果我们必须使用setter getter方法来实现它,那么其他任何人都可以使用setter getter方法来实现它。。那么,我们是如何避免被操纵的呢?
发布于 2019-05-28 05:44:55
封装并不是一种安全措施,因为它可以防止人们篡改您的代码。从某种意义上说,这是一种安全措施,人们不能直接进入并在没有经过适当渠道的情况下更改变量。考虑下面的伪代码。
class ProgressBar {
public int maximum;
public int current;
}
vs
class ProgressBar {
private int maximum;
private int current;
...
public set_current(int amount) {
if (amount <= this.maximum) this.current = amount;
}
}
在上面的示例中,用户可能会进入并扰乱当前,并打破进度条。在下面的示例中,您的setter可以防止出现这种情况。
发布于 2019-05-28 05:46:28
你需要这样看,
your code
<- client code
客户端代码将尝试访问您的代码。使用Encapsulation
,您的数据将不会受到客户端代码可以进行的操作。它将有助于指定可访问性限制。
举个例子,
你正在构建一个游戏,你不希望有人增加你角色的生命值(操纵固定的数据)
public class GameCharacter {
public int Health{ get; }
public GameCharacter ()
{
Health = 100;
}
}
没有人可以改变健康!
https://stackoverflow.com/questions/56332669
复制相似问题