2017-03-20 188 views
-2
ClassA 
{ 

} 

ClassB : ClassA 
{ 

} 

實例子類的對象,我可以做爲什麼我們不能從父類

ClassA objA = new ClassB(); 

但爲什麼我不能做反向

ClassB objB = new ClassA(); 

究竟發生在後臺?編譯器如何對待它?

+3

你的意思是在這裏放置一些繼承嗎?我在「ClassA」是基類的基礎上回答了這個問題,但沒有仔細閱讀你的問題。 – Bathsheba

+0

沒有繼承:'ClassA objA = new ClassB();'也是行不通的。 –

+0

你忘了繼承一些東西?當前的代碼不會編譯,也不會*「我可以做」*部分將工作。 – Sinatr

回答

0

因爲編譯器自動將派生類轉換爲基類 - 它只是將其解釋爲基類的對象,而忽略其他屬性。但是要將對象轉換爲派生類,它以前一定是該派生類的對象,編譯器希望您明確定義該類。但即使你明確地定義了轉換,它也不會工作,因爲該對象從來不是派生類型的。

相關問題