/** * 宠物类,狗狗和企鹅的父类*/ public abstract class Pet { protected String name = "无名氏";// 昵称 protected int health = 100;// 健康值 protected int love = 0;// 亲密度 public abstract void eat(); //抽象方法eat(),负责宠物吃饭功能。 /** * 无参构造方法。 */ public Pet() { } /** * 有参构造方法。 * @param name 昵称 */ public Pet(String name) { this.name = name; } public String getName() { return name; } public int getHealth() { return health; } public int getLove() { return love; } /** * 输出宠物信息。 */ public void print() { System.out.println("宠物的自白:\n我的名字叫" + this.name + ",健康值是" + this.health + ",和主人的亲密度是" + this.love + "。"); } }
/** * 狗狗类,宠物的子类。*/ public class Dog extends Pet { private String strain;// 品种 /** * 有参构造方法。 * @param name 昵称 * @param strain 品种 */ public Dog(String name, String strain) { super(name); this.strain = strain; } public String getStrain() { return strain; } /** * 重写父类的print方法。 */ public void print(){ super.print(); //调用父类的print方法 System.out.println("我是一只 " + this.strain + "。"); } /** * 实现吃饭方法。 */ public void eat() { super.health = super.health + 3; System.out.println("狗狗"+super.name + "吃饱啦!健康值增加3。"); } }
import java.util.ArrayList; import java.util.List; import cn.jbit.epet.poly.Dog; /** * 测试对List应用泛型*/ public class TestList { public static void main(String[] args) { /* 1、创建多个狗狗对象*/ Dog ououDog = new Dog("欧欧", "雪娜瑞"); Dog yayaDog = new Dog("亚亚", "拉布拉多"); Dog meimeiDog = new Dog("美美", "雪娜瑞"); Dog feifeiDog = new Dog("菲菲", "拉布拉多"); /* 2、创建ArrayList集合对象并把多个狗狗对象放入其中*/ List<Dog> dogs = new ArrayList<Dog>();//标记元素类型 dogs.add(ououDog); dogs.add(yayaDog); dogs.add(meimeiDog); dogs.add(2, feifeiDog); // 添加feifeiDog到指定位置 //dogs.add("hello"); //出现编译错误,元素类型不是Dog。 /* 3、 显示第三个元素的信息*/ Dog dog3 = dogs.get(2); //无需类型强制转换 System.out.println("第三个狗狗的信息如下:"); System.out.println(dog3.getName() + "\t" + dog3.getStrain()); /*4、使用foreach语句遍历dogs对象*/ System.out.println("\n所有狗狗的信息如下:"); for(Dog dog:dogs){//无需类型强制转换 System.out.println(dog.getName() + "\t" + dog.getStrain()); } } }
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import cn.jbit.epet.poly.Dog; /** * 测试对Map应用泛型 * */ public class TestMap { public static void main(String[] args) { /* 1、创建多个狗狗对象*/ Dog ououDog = new Dog("欧欧", "雪娜瑞"); Dog yayaDog = new Dog("亚亚", "拉布拉多"); Dog meimeiDog = new Dog("美美", "雪娜瑞"); Dog feifeiDog = new Dog("菲菲", "拉布拉多"); /* 2、创建Map集合对象并把多个狗狗对象放入其中*/ Map<String,Dog> dogMap=new HashMap<String,Dog>(); dogMap.put(ououDog.getName(),ououDog); dogMap.put(yayaDog.getName(),yayaDog); dogMap.put(meimeiDog.getName(),meimeiDog); dogMap.put(feifeiDog.getName(),feifeiDog); /*3、通过迭代器依次输出集合中所有狗狗的信息*/ System.out.println("使用Iterator遍历,所有狗狗的昵称和品种分别是:"); Set<String> keys=dogMap.keySet();//取出所有key的集合 Iterator<String> it=keys.iterator();//获取Iterator对象 while(it.hasNext()){ String key=it.next(); //取出key Dog dog=dogMap.get(key); //根据key取出对应的值 System.out.println(key+"\t"+dog.getStrain()); } /*//使用foreach语句输出集合中所有狗狗的信息 for(String key:keys){ Dog dog=dogMap.get(key); //根据key取出对应的值 System.out.println(key+"\t"+dog.getStrain()); }*/ } }