在我的
Student
类中,变量首先设置为:
public String name;
我在另一个名为
StudentUse
类的类中访问它,如下所示:
Student s1 = new Student();
s1.name= "sarang";
System.out.println(s1.name);
它印有“sarang”。
之后我将变量的访问修饰符更改为:
private String name;
并尝试使用 getter 方法打印相同的对象变量“名称”。
System.out.println(s1.getName());
为什么它打印 null 而不是“sarang”,即使它在更改访问修饰符之前设置为值“sarang”?
如果我们改变了java中变量的访问修饰符,是不是该对象之前的信息就丢失了?
这一切都归结为您的
getName
方法,根据您的描述,该方法可能如下所示:
public String getName() {
return null;
}
而它需要看起来像这样:
public String getName() {
return this.name;
}
当您将
name
的修饰符从 public
更改为 private
时,您有效地阻止了对该数据成员的直接访问,并且您做得很好。
getName
仍然是 public
,因此您可以通过 name
访问 getName
,因此您有一个 public
getter,可用于读取数据成员的值,即使数据成员是 private
并且只能在class
内部引用和更改。通过将某些内容从 public
更改为 private
,您不会丢失它。您只需使从外部对其的直接访问无效,这是一件好事,因为当该成员被读取或写入时,您可能还想做其他事情,例如记录操作或类似的操作,并且如果您有 getter 和 setter ,那么您已经对您想要嵌入到这些操作中的任何未来事物有了清晰的支持。