如果我将实例变量设置为私有,是否可以避免隐私泄露的风险?
Do I avoid the risk of privacy leaks, if I set the instance variables to private?
我正在做一项 Java 作业。我的教授写道: 警告:一定要以这种方式设置 Class 的属性,以避免任何隐私泄露的风险。我对此感到困惑。我对隐私泄露的理解一直是使用拷贝构造函数,但是实例变量怎么会泄露隐私呢?这就是我们总是将实例变量设置为私有的原因吗?
如果这是您的主要代码,那么答案是肯定的,这就是我们将除全局变量之外的任何变量设置为私有的原因。
class Demo {
private String Var = "100";
void Meth(String str) {
System.out.println(str + Var);
}
}
class Main {
public static void main(String[] args) {
Demo demo1 = new Demo();
demo1.Meth("10 x 10 = ");
System.out.println(demo1.Var);//Error. This variable is set to private so it cannot be accessed.
}
}
您的变量的隐私或控制只能由变量的 superclass/control 块访问。
这是DemoClass中的一个例子变量是私有的,不能直接访问。你只能通过 getters 和 setters
获取这些变量
public class DemoClass {
// you can not get these variable directly
private String stringValue;
private int integerValue;
public DemoClass(String stringValue, int integerValue) {
this.stringValue = stringValue;
this.integerValue = integerValue;
}
public void setStringValue(String stringValue) {
this.stringValue = stringValue;
}
public void setIntegerValue(int integerValue) {
this.integerValue = integerValue;
}
public String getStringValue() {
return stringValue;
}
public int getIntegerValue() {
return integerValue;
}
}
class Main {
public static void main(String[] args) {
DemoClass demoClass =new DemoClass("My String Value",120);
System.out.println(demoClass.getIntegerValue());
System.out.println(demoClass.getStringValue());
}
}
我正在做一项 Java 作业。我的教授写道: 警告:一定要以这种方式设置 Class 的属性,以避免任何隐私泄露的风险。我对此感到困惑。我对隐私泄露的理解一直是使用拷贝构造函数,但是实例变量怎么会泄露隐私呢?这就是我们总是将实例变量设置为私有的原因吗?
如果这是您的主要代码,那么答案是肯定的,这就是我们将除全局变量之外的任何变量设置为私有的原因。
class Demo {
private String Var = "100";
void Meth(String str) {
System.out.println(str + Var);
}
}
class Main {
public static void main(String[] args) {
Demo demo1 = new Demo();
demo1.Meth("10 x 10 = ");
System.out.println(demo1.Var);//Error. This variable is set to private so it cannot be accessed.
}
}
您的变量的隐私或控制只能由变量的 superclass/control 块访问。
这是DemoClass中的一个例子变量是私有的,不能直接访问。你只能通过 getters 和 setters
获取这些变量public class DemoClass {
// you can not get these variable directly
private String stringValue;
private int integerValue;
public DemoClass(String stringValue, int integerValue) {
this.stringValue = stringValue;
this.integerValue = integerValue;
}
public void setStringValue(String stringValue) {
this.stringValue = stringValue;
}
public void setIntegerValue(int integerValue) {
this.integerValue = integerValue;
}
public String getStringValue() {
return stringValue;
}
public int getIntegerValue() {
return integerValue;
}
}
class Main {
public static void main(String[] args) {
DemoClass demoClass =new DemoClass("My String Value",120);
System.out.println(demoClass.getIntegerValue());
System.out.println(demoClass.getStringValue());
}
}