按如下要求完成编程:
假定采用面向对象程序设计方法利用Java语言设计开发一个动物管理软件。该软件类体系结构描述如下:
(1)有一个类Animal,该类具有三个属性描述动物的特征,一个move方法描述动物的行为。类Bird、Fish为Animal类的子类,在这两个类中重写了父类中的move方法;
(2)有一个接口AnimalOperator,该接口中具有一个抽象方法AddAnimal类描述添加动物的功能,其中方法具有一个形参类型为Animal类(表示要添加的动物对象),方法无返回值。类AnimalOperatorImpl实现了接口AnimalOperator。
(3)编写测试类AnimalTest,实现父类的引用指向子类的对象,通过父类的引用调用子类对象的方法;实现接口的引用指向实现类的对象,通过接口的引用调用实现类的方法。
public class Animal {
private int height ;
private int weight ;
private String kind ;
public Animal() {
}
public void setHeight(int height) {
this.height = height;
}
public int getHeight() {
return height;
}
public void setWeight(int weight) {
this.weight = weight;
}
public int getWeight() {
return weight;
}
public void setKind(String kind) {
this.kind = kind;
}
public String getHeight() {
return kind;
}
public void move() {
System.out.println("Animal is moving");
}
}
public class Bird extends Animal{
public void move() {
System.out.println("Bird is moving");
}
}
public class Fish extends Animal{
public void move() {
System.out.println("Fish is moving");
}
}
public interface AnimalOperator {
public abstract void AddAnimal(Animal c);
}
public class AnimalOperatorImpl implements AnimalOperator{
public void AddAnimal(Animal c) {
System.out.println("Animal is moving");
}
}
public class AnimalTest {
public static void main(String[] args) {
Animal a1 = new Fish();
Animal a2 = new Bird();
a1.move();
a2.move();
AnimalOperatorImpl a3 = new AnimalOperatorImpl();
a3.AddAnimal(null);
}
}