您好!我正在研究超类,并且被参数及其输出所抛弃。
连同图片中的代码,我得到以下内容:
public class Main {
public static void main(String[] args) {
Bat igor=null;
Bird robin;
FlyingAnimal finch;
Statement 1;
}
}
然后我被问到:
if Statement1 is robin = new Bird("Robin",3000,50);输出结果是什么?
我知道答案是:
新动物,物种为知更鸟,人口3000
Bird created, Species is Robin 翼拍 = 50
但我不确定参数是如何通过层次结构传递的。
感谢任何帮助!
所以,根据图像,
class
层次结构如下:
Bird
是 FlyingAnimal
抽象类的子类。这意味着在 super(species, population, wingBeats)
构造函数中调用 Bird
会导致调用 FlyingAnimal(String name, int population, int w)
构造函数。FlyingAnimal
抽象类是Animal
类的子类。这意味着在 super(name, population)
构造函数中调用 FlyingAnimal
会导致调用 Animal(String s, int p)
构造函数。这就是物种名称和种群数量传递给
Animal
构造函数的方式,以及为什么您不仅得到由 Bird
构造函数打印的“Bird created...”字符串,而且还得到“New Animal
构造函数打印的动物...”字符串。