java中setParam_关于java封装中set属性 设置条件的问题

定义狗类publicclassDog{privateStringtype;privateintage;privateStringmood;privateStringname;publicDog(){}publicDog(Stringtype,intage,Stringmood,Stringname){this.type=type;...

定义狗类

public class Dog {

private String type;

private int age;

private String mood;

private String name;

public Dog() {

}

public Dog(String type, int age, String mood, String name) {

this.type = type;

this.age = age;

this.mood= mood;

this.name = name;

}

public String getType() {

return type;

}

public void setType(String type) {

this.type = type;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getMood() {

return mood;

}

public void setMood(String mood) {

if((mood.equals("心情好"))||( mood.equals("心情不好"))){

this.mood = mood;

}else{

System.out.println("无效!默认设置为心情好");

this.mood="心情好";

}

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public void call(){

if(this.mood.equals("心情好")){

System.out.println("名字叫"+this.name+"的"+this.type+"心情很好,开心的汪汪叫");

}else{

System.out.println("名字叫"+this.name+"的"+this.type+"心情不好,伤心的呜呜叫");

}

}

public void run(){

String msg="名字叫"+this.name+"的"+this.type;

if(this.mood.equals("心情好")){

msg+="心情很好,开心的围着主人身边转";

}else{

msg+="心情不好,伤心的一动不动 ";

}

System.out.println(msg);

}

}

以上代码输出结果为

可是正确结果应该为

以下为测试类:

public class DogTest {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

Dog one=new Dog("贵宾犬",2,"没心情","甜心");

one.call();

one.run();

System.out.println("=============================");

Dog two=new Dog();

two.setType("德国牧羊犬");

two.setAge(4);

two.setMood("心情不好");

two.setName("太子");

two.call();

two.run();

}

}

问题:

如果将狗类的含参构造方法中的this.mood= mood; 该为this.setMood(mood);结果就能正确显示,为什么定义第一只狗调用含参构造方法赋值时,我为mood设置的限制不起作用呢???

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值