封装的代码实现(下)

若按照以前的方法将猫的年龄设置为-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);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值