正如我所研究的封装一样,它是关于隐藏数据以防止操作。为此,我们声明了私有变量,因此无法从类外访问。但我们可以使用setter-getter方法在类外实现或访问它们。因此,如果我们必须使用setter-getter方法来实现它,那么任何其他人都可以使用setter-getter方法来实现它。那么我们如何避免操纵呢??
封装的目的有两个:
getter和setter的目标是确保代码(或类)之外的参与者与您的字段只有一个交互点,从而保持不变量。这有助于:
例:两名外部参与者试图同时修改您的账户余额;
例如:将来可以轻松地将状态变量的类型从布尔值更改为枚举,因为它总是从类中的getter访问;
例如:不允许引擎类修改并将汽车类的速度设置为负值,仅仅因为汽车正在倒车。
你需要这样看,
您的代码
客户端代码将尝试访问您的代码。通过封装,您的数据将不会受到客户端代码的操作。这将有助于指定可访问性限制。
举个例子,
你正在构建一个游戏,你不希望有人增加你角色的健康(操纵固定数据)
public class GameCharacter {
public int Health{ get; }
public GameCharacter ()
{
Health = 100;
}
}
没有人能改变健康!
封装不是一种安全措施,因为它可以防止人们干扰您的代码。它是一种安全措施,因为人们不能在不通过您的适当渠道的情况下直接进入并更改变量。考虑以下psuedocode。
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可以避免这种情况。
本文向大家介绍Kafka提供的保证是什么?相关面试题,主要包含被问及Kafka提供的保证是什么?时的应答技巧和注意事项,需要的朋友参考一下 答:生产者向特定主题分区发送的消息的顺序相同。 此外,消费者实例按照它们存储在日志中的顺序查看记录。 此外,即使不丢失任何提交给日志的记录,我们也可以容忍最多N-1个服务器故障。
我的目标是将放在下,以简化我的应用程序的结构。
我有一个使用: 查看
我对Spring和Spring Security都是新手。我在读关于Spring Security的文章,它提出了principal的概念,应该是当前登录的用户。但如果我们有多个当前登录用户呢?那么,我的问题是,在Spring安全中,校长到底是什么? 例如,我已经阅读了本教程: http://www.mkyong.com/spring-security/get-current-logged-in-
问题内容: 我正在阅读面向对象的Javascript,并发现了闭包的概念。我不太明白为什么以及何时使用它。其他语言(例如Java)也有闭包吗?我基本上想了解了解闭包的概念如何帮助我改善编码。 问题答案: 闭包是具有绑定变量的第一类函数。 大致意味着: 您可以将闭包作为参数传递给其他函数 闭包存储创建时存在的词法作用域中某些变量的值 Java最初没有对闭包的语法支持(Java 8中引入了闭包),尽管
在我正在做的一个项目中,应用程序是使用类似于以下命令启动的: 我从未见过选项。稍微搜索一下,它似乎用于在Java应用程序中配置随机数生成。 是这样吗?什么时候应用?