wild84
wild84
采纳率91.6%
2017-02-24 12:30 阅读 3.6k
已采纳

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

我有个抽象类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();

    }

}

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

5条回答 默认 最新

  • 已采纳
    hgq0916 奔腾的野马 2017-02-25 04:12

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

    点赞 评论 复制链接分享
  • wwwhongxia 愚公移码 2017-02-24 13:55

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

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

    你按照我这样的就行了。

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2017-02-24 14:08
     Animal[] animals = new Animal[];
    animals[0]=(Animal)new Cat();
    
    点赞 评论 复制链接分享
  • koloumi koloumi 2017-02-25 04:23

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

    点赞 评论 复制链接分享
  • h469066068 小温同学 2017-06-04 09:42

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

    点赞 评论 复制链接分享

相关推荐