若按照以前的方法将猫的年龄设置为-3,也会正常输出,但显然是有问题的。所以我们需要在赋值方法中进行设置:
package java_animal;
/**
* 宠物猫类
* @author Y
*/
public class Cat {
//成员属性:昵称、年龄、体重、品种
//修改属性的可见性---private 限定只能在当前类内访问
private int month; //int类型变量默认值是0
//创建get/set方法,get获取,set赋值
//在get/set方法中添加对属性的限定
public void setMonth(int month){ //赋值不需要返回值
if(month<0){
System.out.println("年龄信息错误!");
}else{
this.month = month;
}
}
public int getMonth(){ //获取需要返回值
return this.month;
}
}
package java_animal;
public class CatTest {
public static void main(String[] args) {
Cat one = new Cat();
one.setMonth(-2);
System.out.println("年龄:"+one.getMonth());
}
输出:
年龄信息错误!
年龄:0
可看到若传入一个负值年龄,会提示信息错误。但是还是会输出年龄的默认值。这时可以加上条件语句:
if(one.getMonth()==0){
return;
}
若输入3,则输出:年龄:3
但若创建一个带参构造方法,又会出现之前的问题:
public Cat(int month){
this.month = month;
}
package java_animal;
public class CatTest {
public static void main(String[] args) {
Cat one = new Cat(-3);
System.out.println("年龄:"+one.getMonth());
}
}
输出:年龄:-3
为了防止这种情况,一般在构造方法中调用setter方法:
public Cat(int month){
//this.month = month;
this.setMonth(month);
}