- 使用面向对象的思想,编写自定义描述狗的信息。设定属性包括:品种,年龄,心 情,名字;方法包括:叫,跑。
要求:
-
- 设置属性的私有访问权限,通过公有的 get,set 方法实现对属性的访问
- 限定心情只能有“心情好”和“心情不好”两种情况,如果无效输入进行提示, 默认设置“心情好”。
- 设置构造函数实现对属性赋值
- 叫和跑的方法,需要根据心情好坏,描述不同的行为方式。
- 编写测试类,测试狗类的对象及相关方法(测试数据信息自定义)
分析:
不能只在set方法里加上心情限制,也要在构造方法里加上
否则只用构造方法传入错误的心情参数,不用set方法,程序无法判断
或者在叫和跑的方法里默认限制
class Dog{
private String variety ;//品种
private int age;
private String name;
private String mood;//心情
public String getVariety() {
return variety;
}
public void setVariety(String variety) {
this.variety = variety;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMood() {
return mood;
}
public void setMood(String mood) {
if(!mood.equals("心情好")&&!mood.equals("心情不好")){
mood="心情好";
this.mood = mood;
System.out.println("输入信息错误,这只狗狗今天的心情很好");
}
}
public Dog(String variety, int age, String name, String mood) {
this.variety = variety;
this.age = age;
this.name = name;
this.mood = mood;
if(!mood.equals("心情好")&&!mood.equals("心情不好")){
mood="心情好";
this.mood = mood;
System.out.println("输入信息错误,这只狗狗今天的心情很好");
}
}
public void barking(){
if(mood.equals("心情好")){
System.out.println("名字叫"+name+"的"+variety+"心情很好"+","+"开心的汪汪的叫");
}else if (mood.equals("心情不好")) {
System.out.println("名字叫"+name+"的"+variety+"心情不好"+","+"伤心的呜呜呜");
}
}
public void run(){
if(mood.equals("心情好")){
System.out.println("名字叫"+name+"的"+variety+"心情很好"+","+"开心的围着主人转");
} else if (mood.equals("心情不好")) {
System.out.println("名字叫"+name+"的"+variety+"心情不好"+","+"伤心的一动不动");
}
}
}
public class DogTest {
public static void main(String[] args) {
Dog d1=new Dog("田园犬",2,"可乐","haha");
Dog d2=new Dog("贵宾犬",1,"小美","心情不好");
Dog d3=new Dog("土狗",3,"小强","心情好");
d1.barking();
d1.setMood("xxxxx");//不能只在set方法里加上心情限制,也要在构造方法里加上
d1.run(); //否则只用构造方法传入错误的心情参数,不用set方法,程序无法判断
//或者在叫和跑的方法里默认限制
System.out.println("===============================");
d2.setName("牛奶");
d2.run();
System.out.println("===============================");
d3.barking();
}
}
运行结果如下: