如何在java中声明可以存储超类和子类对象的数组?

如何在java中声明可以存储超类和子类对象的数组?,java,arrays,Java,Arrays,我试图弄清楚如何创建一个数组来存储超类和子类对象 Book[] books = new Book[10] 我必须使用关键字super还是sub?请澄清我的疑问 谢谢让我们假设Book是您的超级类,然后您的子类是-> Class SuspenseBook extends Book { //code... } 现在你的阵型 Book[] books = new Book[10] 可以存储书籍对象以及电子书对象 如果有帮助,请告诉我。是的,您可以将子类对象存储在对象的超类数组中。 假设您有

我试图弄清楚如何创建一个数组来存储超类和子类对象

   Book[] books = new Book[10]
我必须使用关键字super还是sub?请澄清我的疑问


谢谢

让我们假设Book是您的超级类,然后您的子类是->

Class SuspenseBook extends Book {
//code...
}
现在你的阵型

Book[] books = new Book[10]
可以存储书籍对象以及电子书对象


如果有帮助,请告诉我。

是的,您可以将子类对象存储在对象的超类数组中。 假设您有以下代码:

class Animal {
    void saySomething() {System.out.print(" Hummmmm!");}
}

class Cow extends Animal {
    protected void saySomething() {System.out.print(" oMooo!");}
}
public class test {
    public static void main(String [] args) {
        System.out.print(" MooYa!");
        Animal [] animals = {new Animal(), new Cow()};
        for( Animal a : animals) {
            a.saySomething();
        }
    }
}
这段特定的代码在第11行有
Animal[]animals={new Animal(),new Cow()}
。 此代码将创建一个超类类型的数组(即
Animal
),并将初始化两个对象-一个超类和一个要存储在数组中的子类。 现在,由于子类
Cow
继承了超类
Animal
,因此将
Cow
类对象添加到超类数组可以重新编写为:
动物=新奶牛()
这就是多态性,超类引用变量可用于存储子类对象的地址。简而言之,超类可以采用子类的形式(图书定义)


**因此,为了回答您的问题,您可以将子类对象存储在超类数组中。

如果您有
Book
的子类,您可以将它们放在
Book
数组中。因此,在示例数组-
Book
中,您希望存储
Book
的超类以及子类吗?
Book
的子类可以放在该数组中。请将代码格式化为代码块,不带行号,并使用单间距和语法突出显示。这可以通过将其缩进4个空格来实现。