wild84 2017-02-24 12:30 采纳率: 80%
浏览 3975
已采纳

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

我有个抽象类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条回答 默认 最新

  • 奔腾的野马 2017-02-25 04:12
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • threenewbee 2017-02-24 14:08
    关注
     Animal[] animals = new Animal[];
    animals[0]=(Animal)new Cat();
    
    评论
  • 愚公移码 2017-02-24 13:55
    关注

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

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

    你按照我这样的就行了。

    评论
  • koloumi 2017-02-25 04:23
    关注

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

    评论
  • 小温同学 2017-06-04 09:42
    关注

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

    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 c++图Djikstra算法求最短路径
  • ¥15 Linux操作系统中的,管道通信问题
  • ¥15 ansible tower 卡住
  • ¥15 等间距平面螺旋天线方程式
  • ¥15 通过链接访问,显示514或不是私密连接
  • ¥100 系统自动弹窗,键盘一接上就会
  • ¥50 股票交易系统设计(sql语言)
  • ¥15 调制识别中这几个数据集的文献分别是什么?
  • ¥15 使用c语言对日志文件处理
  • ¥15 请大家看看报错原因,为啥会这样