考虑以下声明:
public class Dog0
{ public void doNothing(Dog1 a, Dog2 b) {} }
public class Dog1 extends Dog0 {}
public class Dog2 extends Dog1 {}
以下初始化出现在另一个类中:
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)但我不确定。有人可以向我解释一下吗?感谢。
答案 0 :(得分:-1)
<强>校正强>
无 是答案,因为 E 是答案,Dog1 d2 = new Dog2();
应该是变成了Dog2 d2 = new Dog2();
但如果是, E 将是正确答案。
doNothing
接受Dog1, Dog2
作为其参数。 Dog2
是Dog1
,因此,您可以使用Dog2
代替Dog1
。