Java 中涉及继承的多项选择?

Multiple Choice Involving Inheritance in Java?

考虑以下声明:

public class Dog0
{ public void doNothing(Dog1 a, Dog2 b) {} }

public class Dog1 extends Dog0 {}
public class Dog2 extends Dog1 {}

以下初始化出现在不同的 class:

Dog0 d0 = new Dog0 ();
Dog1 d1 = new Dog1 ();
Dog1 d2 = new Dog2 ();

以下哪项是对 doNothing 的正确调用?

a) d0.doNothing(d0, d0);
b) d1.doNothing(d1, d1);
c) d1.doNothing(d2, d1);
d) d2.doNothing(d0, d0);
e) d2.doNothing(d2, d2); 

我认为答案是 e) 但我不确定。有人可以向我解释一下吗?谢谢

更正

None 是答案,因为 E作为答案,Dog1 d2 = new Dog2();应该变成Dog2 d2 = new Dog2();

但如果是,E 将是正确答案。

doNothing 接受一个 Dog1, Dog2 作为它的参数。 Dog2Dog1,因此,您可以用 Dog2 代替 Dog1