【发布时间】:2020-02-05 21:56:37
【问题描述】:
dog1.setName("rex") 没有将值 "rex" 分配给 name,而是
返回null为什么会这样?
public class Program3a {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
name = "unassigned";
}
}
public class Program3aTest extends Program3a{
public static void main(String[]args) {
Program3aTest dog1 = new Program3aTest();
dog1.setName("rex");
System.out.println(dog1.getName());
}
}
【问题讨论】:
-
name = "unassigned";应该是this.name = "unassigned";。否则你修改的是参数而不是类字段。 -
即使那样,名字也永远不会是
"rex"。 -
好的,所以我将 name = "unassigned" 更改为 this.name = "unassigned";现在它返回未分配而不是 null,但仍然不是 rex
-
@user12114019 这就是 Arnaud 的意思。在您的
setName中,您将name设置为= "unassigned"。因此,当您调用它时,它会这样做。 -
好的,那么我如何获得 rex 的值?因为当我删除 = "unassigned";我收到语法错误插入“赋值运算符表达式”来完成表达式。我该怎么办?