はい、スーパークラスオブジェクトの配列内にサブクラスオブジェクトを格納できます。 は、コードのこの部分を持っているとしましょう:
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
)と2つのオブジェクトを初期化するにAnimal[] animals = { new Animal(), new Cow()}
持っています - 配列に格納されるスーパークラスの1つとサブクラスの1つ。 すぐサブクラスCow
したがってスーパーアレイにCow
クラスオブジェクトを追加スーパーAnimal
を継承するためのように書き換えることができる: Animal animals = new Cow();
これは、スーパークラスの参照変数はサブクラスオブジェクトのアドレスを格納するために使用することができる多型です。要するに、スーパークラスはサブクラス(ブック定義)の形式をとることができます。
**したがって、あなたはスーパークラス配列の中にサブクラスオブジェクトを格納することができます。
'Book'のサブクラスをお持ちの場合は、それらを' books'配列に入れることができます。 – Kayaman
あなたの例の配列 'books'では' Book'のスーパークラスとサブクラスを保存したいのですか? 'Book'のサブクラスをその配列に入れることができます。 –