效果如下图:
public abstract class Pet { //父类 private String name; private int age; private String sex; private int cute; //可爱度 private int clean; //清洁度 private int sleep; //睡眠度 private boolean live; //活着 public Pet() { super(); } public Pet(String name,String sex) { super(); this.name = name; this.age = 1; this.sex = sex; this.cute = 5; //初始值 this.clean = 50; this.sleep = 50; this.live = true; } public abstract void cutey (); public abstract void cleany(); public abstract void sleepy() ; public abstract void excuse(); public void show() { //显示信息的方法 System.out.println("名字"+this.name); System.out.println("年龄"+this.age); System.out.println("性别"+this.sex); System.out.println("可爱度"+this.cute); System.out.println("干净度"+this.clean); System.out.println("睡眠度"+this.sleep); } public boolean check() { //有返回值的方法 if(this.clean<=20) { System.out.println("该洗澡了"); } if(this.sleep ==30) { System.out.println("休息一下"); }else if(this.sleep ==10) { live = false; System.out.println("over"); } return live; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getCute() { return cute; } public void setCute(int cute) { this.cute = cute; } public int getClean() { return clean; } public void setClean(int clean) { this.clean = clean; } public int getSleep() { return sleep; } public void setSleep(int sleep) { this.sleep = sleep; } public boolean getLive() { //注意这个布尔值,如果是自动生成的话,会少一个get,需要自己添一下 return live; } public void setLive(boolean live) { this.live = live; } }
public class Dog extends Pet { //子类 public Dog() { super(); } public Dog(String name, String sex) { super(name, sex); } @Override public void excuse() { System.out.println("忠诚于您"); } @Override public void cutey() { System.out.println(super.getName()+"摇尾巴 ,可爱度+5"); super.setCute(getCute()+5); } @Override public void cleany() { System.out.println(super.getName()+"在泥巴里玩,清洁度-10,"); super.setClean(getClean()-10); } @Override public void sleepy() { System.out.println(super.getName()+"趴在地上,睡眠度-10"); super.setSleep(getSleep()-10); } }
public class Cat extends Pet { //子类 public Cat() { } public Cat(String name, String sex) { super(name, sex); } @Override public void excuse() { System.out.println("是我的永远是我的"); } @Override public void cutey() { System.out.println(super.getName()+"玩毛线 ,可爱度+5"); super.setCute(getCute()+5); } @Override public void cleany() { System.out.println(super.getName()+"爬树,清洁度-10"); super.setClean(getClean()-10); } @Override public void sleepy() { System.out.println(super.getName()+"睡在树上,睡眠度-10"); super.setSleep(getSleep()-10); } }
import java.util.Scanner; import com.hanqi.test.model.Cat; import com.hanqi.test.model.Dog; import com.hanqi.test.model.Pet; //引入是因为Test是与Cat,Dog,Pet在不同的包下面 public class Test { //输出 public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Pet p = null; //作用是不用再去实例化好多次 System.out.println("选择类型:"); System.out.println("1.泰迪 2.黑猫"); String s = scanner.nextLine(); System.out.println("起个名字吧"); String m =scanner.nextLine(); System.out.println("雄or雌"); String x = scanner.nextLine(); if("1".equals(s)) { p = new Dog(m,x); //父类的引用指向子类 p.excuse(); //打招呼 }else { p =new Cat(m,x); p.excuse(); } boolean f = true; while(f) { f = p.check(); System.out.println("请选择:0.显示,1.可爱模式 ,2.玩的地点,3.睡的地方 ,4.退出"); String w = scanner.nextLine(); if("0".equals(w)) { p.show(); f = p.check(); } else if ("1".equals(w)) { p.cutey(); f = p.check(); }else if ("2".equals(w)) { p.cleany(); f = p.check(); }else if ("3".equals(w)) { p.sleepy(); f = p.check(); }else if ("4".equals(w)) { f = false; }else { System.out.println("请输入内容"); } } scanner.close(); } }