【发布时间】:2020-12-19 06:48:58
【问题描述】:
据我所知,封装对外部人员隐藏了您的数据成员,并且只允许它使用同一类的方法进行访问。这样他们就无法向外界显示您的个人数据。顺其自然,
private double amount;
public void add(double value) {
return this.amount + value;
}
在这里,您的数量变量不会与使用 private 的外部人员共享,并且他们不知道您使用的变量名称。
但是在类似的情况下,我们也提供了 getter / setter 来访问它们,那么封装如何才能对外界变得安全?
public void setAmount(double value) {
this.amount = value;
}
public double getAmount() {
return this.amount;
}
这意味着很可能 getter 或 setter 方法具有相同的模式,而局外人对此有基本的了解。所以我想在做了一些尝试之后,他能够使用 getter 或使用 setter 进行更改。在这种情况下,直接 public 定义数量或提供 getter 两者都变得相同。
谁能解释一下?
【问题讨论】:
-
嗯,这个问题基本上等于问“为什么我们有墙,人们也可以通过门进入”。你,程序员,控制着门,你选择谁和如何进来。当你允许你的例子中的一切,那么这取决于你,但是当你没有墙时,你就没有什么可以检查/验证/阻止。