Java 无法将子[]传递给接受父[]的方法。为什么?
为什么在将子[]传递到接受父[]的方法时出现编译错误 但是,我可以定义Parent[]的一个变量,并为其分配一个值Child[] 凯西·塞拉图书仿制药章节说它应该可以正常工作Java 无法将子[]传递给接受父[]的方法。为什么?,java,arrays,polymorphism,Java,Arrays,Polymorphism,为什么在将子[]传递到接受父[]的方法时出现编译错误 但是,我可以定义Parent[]的一个变量,并为其分配一个值Child[] 凯西·塞拉图书仿制药章节说它应该可以正常工作 package com.collections; import java.util.List; import java.util.ArrayList; class AnimalDoctor{ public void checkAnimals(Animal[] animals){ for(Anim
package com.collections;
import java.util.List;
import java.util.ArrayList;
class AnimalDoctor{
public void checkAnimals(Animal[] animals){
for(Animal a: animals){
a.check();
}
}
}
abstract class Animal {
public abstract void check();
}
class Dog {
public void check(){
System.out.println(" Check Dog");
}
}
class Cat {
public void check(){
System.out.println(" Check Cat");
}
}
class Bird {
public void check(){
System.out.println(" Check Bird");
}
}
public class TestGenerics {
public static void main(String[] args){
class Parent{}
class Child extends Parent{}
Parent[] array = new Child[11]; //no error in assigning array of child elements to Parent[]
Dog[] dogs = { new Dog(), new Dog()};
Cat[] cats = { new Cat(), new Cat(), new Cat()};
Bird[] birds = {new Bird()};
AnimalDoctor doctor = new AnimalDoctor();
doctor.checkAnimals(dogs); //compilation error - why?
doctor.checkAnimals(cats); //compilation error - why?
doctor.checkAnimals(birds); //compilation error - why?
}
}
我的“狗”、“猫”和“鸟”类缺少扩展动物。类“猫”、“狗”和“鸟”应扩展动物类。