2017-04-23 92 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