定义狗类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设置的限制不起作用呢???
展开