2015-12-28 159 views
-3

,如果我有這樣的:傳遞子類型在方法參數,以超類類型

class A{ 
} 

class B extends A{ 
} 

class C extends B{ 
} 

然後可以我通過C的實例來請求A的實例的方法?像這樣:

void aMethod(A anInstanceOfA){ 
// some code 
} 

C anInstanceOfC = new C(); 
aMethod(anInstanceOfC); 

如果沒有,有沒有辦法達到相同的結果?

+1

是的,您可以隨時在需要A實例的情況下使用C實例。這包括將它傳遞給需要A參數的方法。 – Jojonete

+2

你爲什麼不簡單地測試它?如果你的機器上沒有安裝Java,你可以使用在線編譯器,比如https://ideone.com/ – Pshemo

+0

,你可以將'A'的任何子類型傳遞給'aMethod()',順便說一下,你可以很容易地測試這個在線或在一些ide – Ramanlfc

回答

0

我可以將C的實例傳遞給請求A實例的方法嗎?

是的,你可以。您也可以將類別爲C的對象分配給聲明爲A類型的變量。事實上,C的實例是A的實例(但並非所有A的實例都是C的實例)。