首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >封装的目的是什么?它是否提供了安全层?

封装的目的是什么?它是否提供了安全层?
EN

Stack Overflow用户
提问于 2019-05-28 05:38:03
回答 2查看 636关注 0票数 1

尽管我已经学习了很多关于封装的知识,但它是关于隐藏数据以防止被操纵。为此,我们声明了私有变量,这样就不能从类外访问它。但我们可以使用setter getter方法在类外实现或访问它们。因此,如果我们必须使用setter getter方法来实现它,那么其他任何人都可以使用setter getter方法来实现它。。那么,我们是如何避免被操纵的呢?

EN

回答 2

Stack Overflow用户

发布于 2019-05-28 05:44:55

封装并不是一种安全措施,因为它可以防止人们篡改您的代码。从某种意义上说,这是一种安全措施,人们不能直接进入并在没有经过适当渠道的情况下更改变量。考虑下面的伪代码。

代码语言:javascript
复制
class ProgressBar {
    public int maximum;
    public int current;
}

vs

代码语言:javascript
复制
class ProgressBar {
    private int maximum;
    private int current;

    ...
    public set_current(int amount) {
        if (amount <= this.maximum) this.current = amount;
    }
}

在上面的示例中,用户可能会进入并扰乱当前,并打破进度条。在下面的示例中,您的setter可以防止出现这种情况。

票数 3
EN

Stack Overflow用户

发布于 2019-05-28 05:46:28

你需要这样看,

your code <- client code

客户端代码将尝试访问您的代码。使用Encapsulation,您的数据将不会受到客户端代码可以进行的操作。它将有助于指定可访问性限制。

举个例子,

你正在构建一个游戏,你不希望有人增加你角色的生命值(操纵固定的数据)

代码语言:javascript
复制
public class GameCharacter {

public int Health{ get; } 

public GameCharacter ()
{
    Health = 100;
}

}

没有人可以改变健康!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56332669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档