Java继承与泛型实战:动物饲养系统设计

一、需求分析

我们需要实现一个动物饲养系统,包含以下核心要求:

1. 建立动物继承体系(猫/狗及其子类)

2. 实现各品种特有的进食行为

3. 编写饲养方法,满足三种不同的参数限制要求

    Animal <|-- Cat

    Animal <|-- Dog

    Cat <|-- PersianCat

    Cat <|--LiHuaCat

    Dog <|-- TaiDiDog

    Dog <|-- HuskyDog


二、基本类实现

1)抽象动物类

public abstract class Animal {

	private String name;
	private int age;
	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 Animal() {
    	
    }
    public Animal(String name,int age) {
    	this.name=name;
    	this.age=age;
    }
    public abstract void eat();
    public String toString() {
    	return "Animal{name="+name+",age="+age+"}";
    		
    }
}

2)抽象猫类

public abstract class Cat extends Animal{

	
}

3)抽象狗类

public abstract class Dog extends Animal{

}

三、具体品种实现

1.猫品种

public class LiHuaCat extends Cat{


	@Override
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("一只叫做"+getName()+"的"+getAge()+"岁的狸花猫,正在吃鱼");
	}

}


public class PersianCat extends Cat{

	@Override
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("一只叫做"+getName()+"的"+getAge()+"岁的波斯猫,正在吃小饼干");
	}

}

2.狗品种

public class TaiDiDog extends Dog {

	@Override
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("一只叫做"+getName()+"的"+getAge()+"岁的泰迪狗,正在吃骨头");
	}

}


public class HuskyDog extends Dog{

	@Override
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("一只叫做"+getName()+"的"+getAge()+"岁的哈士奇,正在吃骨头,边吃边拆家");
	}

}

四、饲养方法

1.仅养猫

public static void keepCats(ArrayList cats) {
    for (Cat cat : cats) {
        cat.eat();
    }
}

2.仅养狗

public static void keepDogs(ArrayList dogs) {
    for (Dog dog : dogs) {
        dog.eat();
    }
}

3.动物

public static void keepPets(ArrayList animals) {
    for (Animal animal : animals) {
        animal.eat();
    }
}

五、测试类

public class AnimalTest {
    public static void main(String[] args) {
        ArrayList animals = new ArrayList<>();
        animals.add(new PersianCat("波波", 2));
        animals.add(new LiHuaCat("小花", 3));  
        animals.add(new TaiDiDog("豆豆", 1)); 
        animals.add(new HuskyDog("二哈", 2));  

        ArrayList cats = new ArrayList<>();
        cats.add(new PersianCat("雪球", 1));
        cats.add(new LiHuaCat("虎斑", 4));    

        ArrayList dogs = new ArrayList<>();
        dogs.add(new TaiDiDog("巧克力", 2));  
        dogs.add(new HuskyDog("狼牙", 3));   

        System.out.println("----- 只养猫 -----");
        keepCats(cats);
        
        System.out.println("----- 只养狗 -----");
        keepDogs(dogs);
        
        System.out.println("----- 养所有动物 -----");
        keepPets(animals);
    }

    // 饲养方法保持不变
    public static void keepCats(ArrayList cats) { /*...*/ }
    public static void keepDogs(ArrayList dogs) { /*...*/ }
    public static void keepPets(ArrayList animals) { /*...*/ }

说明:重点通配符的使用,见上节


版权声明:本文由Hygge-star原创,转载需注明出处。

你可能感兴趣的:(Java,java,开发语言,功能测试,eclipse,代码规范,学习方法)