我有个抽象类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调用?
遇到难题了谢谢!