如果创建抽象父类的实例化子类对象数组?

我有个抽象类Animal,Cat类和Duck类继承了Animal类,我希望创建一个Animal类型的数组,这样我就可以animal[0]=new Cat();animal[1]=new Duck();我的代码是这样的:

 public abstract class Animal {

}
public class Cat extends Animal {

}
public class Duck extends Animal {

}
public class Test {

    public static void main(String[] args) {
        Animal animal[0]=new Cat();

    }

}

但是这样出错误了。应该怎么实现?

Animal animal[0]=new Cat();这种写法是错误的。首先你要创建一个Animal数组。
如:Animal animals[] = new Animal[2];
然后再给数组的每个元素赋值:
animals[0] = new Cat();
animals[1] = new Duck();

 Animal[] animals = new Animal[];
animals[0]=(Animal)new Cat();

如果你要new一个数组,他不能前面是父类后面是子类,编译器不让这样的继承。

Animal[] a=new Animal[]{new Cat(),new Duck()};

你按照我这样的就行了。

先声明数组然后在实例化为子类

那测试类中可以这样调用不?按照你这种方法声明,
假如子类Cat中有个成员变量String foot;
能否直接a[0].foot调用?
遇到难题了谢谢!