setter 方法由于此关键字而产生错误

setter method giving an error due to this keyword

提问人:Shephali Shukla 提问时间:4/6/2022 最后编辑:Shephali Shukla 更新时间:4/6/2022 访问量:179

问:

程序在 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;
    }
}
Java 方法 This setter

评论

2赞 001 4/6/2022
setter 的最后一行总是被执行。在块中添加 a。return;if

答:

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 并将其更改为参数中传递的变量