多态,用法
父类
public class Pet {
public String name;
public int health;
public int honest;
}
子类
public class Dog extends Pet {
public String type;
}
public class Panda extends Pet {
public String sex;
}
//添加Dog或Panda
private void addPet() {
Scanner s = new Scanner(System.in);
List<Pet> list=new ArrayList<Pet>();
System.out.println("请选择宠物类型(1.狗狗 2.熊猫):");
int num=s.nextInt();
Pet pet=null;
if(num==1){
pet= new Dog();
System.out.println("请输入请输入宠物的昵称:");
pet.name=s.next();
System.out.println("请输入宠物的健康值:");
pet.health=s.nextInt();
System.out.println("请输入和主人亲密度:");
pet.honest=s.nextInt();
System.out.println("请输入狗狗品种:");
if (pet instanceof Dog) {
Dog d=(Dog) pet;
d.type=s.next();
}
}else{
pet=new Panda();
System.out.println("请输入请输入宠物的昵称:");
pet.name=s.next();
System.out.println("请输入宠物的健康值:");
pet.health=s.nextInt();
System.out.println("请输入和主人亲密度:");
pet.honest=s.nextInt();
System.out.println("请输入熊猫的性别:");
if(pet instanceof Panda){
Panda panda=(Panda) pet;
panda.sex=s.next();
}
}
list.add(pet);
System.out.println("添加成功!");
}
//显示
StringBuffer buffer=new StringBuffer("编号\t昵称\t健康值\t亲密度\t品种/性别");
buffer.append(System.getProperty("line.separator"));//StringBuffer的换行方式
int count=1;
for (Pet pet : list) {
buffer.append(count+"\t"+pet.showInfo()
+System.getProperty("line.separator"));
count++;
}
System.out.println(buffer);
由于上部分代码不全,故需要自己打测试一下比较好。下面是我的运行截图