【发布时间】:2020-04-20 05:13:13
【问题描述】:
我的任务是找出如何查看但不编辑来自另一个类的私有 int。我尝试了一些过于复杂的事情,但有效的是:
public int getC() {
return myC;
}
myC 是一个私有整数。让另一个类访问私有变量真的这么容易吗?我以为他们不能分享。有人可以解释为什么允许这样做吗?谢谢。
【问题讨论】:
-
不,你不能,你是通过 getter 提供访问权限,这是一个很好的做法,因为如果那个外部类可以直接访问 myC,你就会被它困住,你的班级必须拥有 if for life否则您将破坏其他代码,您也可以对要分配给该变量的内容进行任何验证,但是如果您明天使用 getter() 可以使其返回其他内容,也可以输入验证代码
-
明确地说,通过反射绕过
private真的很容易。这是简单的封装,您返回myC,但可以(如果要求更改)return d,其中d是其他int。但即便如此,通过反射,有人可以访问您的private字段。所以没有strong保证某人不能访问private字段。