提问人:Shephali Shukla 提问时间:4/6/2022 最后编辑:Shephali Shukla 更新时间:4/6/2022 访问量:179
setter 方法由于此关键字而产生错误
setter method giving an error due to this keyword
问:
程序在 setter 方法中引发错误,可能是由于使用此关键字。为什么会出错?
错误:方法调用 setAge(-5),将字段值设置为“-5”,但“0”是预期的。预期:<0>但为:<-5>。
public class Person {
private String firstName;
private String lastName;
private int age;
public String getFirstName(){
return this.firstName;
}
public String getLastName(){
return this.lastName;
}
public int getAge(){
return this.age;
}
public void setFirstName(String firstName){
this.firstName = firstName;
}
public void setLastName(String lastName){
this.lastName = lastName;
}
public void setAge(int age){
**if(age < 0 || age > 100){
this.age = 0;** *Why this keyword gives an error here?*
}
this.age = age;
}
}
答:
0赞
degla
4/6/2022
#1
将您设置的年龄函数更改为:
public void setAge(int age){
if(age < 0 || age > 100){
this.age = 0;
}
else
this.age = age;
}
或
public void setAge(int age){
if(age < 0 || age > 100){
age = 0;
}
this.age = age;
}
评论
0赞
Shephali Shukla
4/6/2022
为什么我们在第二个代码段中没有使用“this”?<年龄 = 0>
0赞
degla
4/7/2022
因为 this.age = 0;更改 Attribut 实例,而不是参数中传递的变量,它将其更改为 0,但稍后在下一行中,它仍然执行 this.age=age;这意味着您将覆盖您写入的 0 并将其更改为参数中传递的变量
评论
return;
if