2017-04-23 65 views
-4

考虑以下声明:在Java中涉及继承的多项选择?

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)但我不确定。有人可以向我解释这一点吗?谢谢。

+1

为什么不将代码转储到项目中并查看会发生什么? –

+0

'Dog1 d2 = new Dog2();'似乎是一个不正确的假设。你可能是指'Dog2 d2 = new Dog2();'。否则,这5种方法都不会编译。 – CoronA

+2

我投票结束这个问题作为题外话题,因为提出作业帮助的问题必须包括迄今为止解决问题所做的工作的摘要,以及描述您解决问题的难点。 [源代码](https://stackoverflow.com/help/on-topic) –

回答

-1

修正

就是答案,因为é是答案,Dog1 d2 = new Dog2();应转为Dog2 d2 = new Dog2();

但如果是,ē将是正确的答案。

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

+0

Stack Overflow是一个问答网站,而不是作业写作服务。请不要让用户有理由相信。谢谢。 –

+0

我觉得用户想要为什么答案是这样的理由。用户做了一个有教养的猜测,但没有完全理解继承规则,因此我认为一些澄清是有效的。国际海事组织,他不只是说,“你能为我解决这个问题吗?” – EyuelDK

+0

@EyuelDK谢谢。 – Penguin