-2
ClassA
{
}
ClassB : ClassA
{
}
實例子類的對象,我可以做爲什麼我們不能從父類
ClassA objA = new ClassB();
但爲什麼我不能做反向
ClassB objB = new ClassA();
究竟發生在後臺?編譯器如何對待它?
ClassA
{
}
ClassB : ClassA
{
}
實例子類的對象,我可以做爲什麼我們不能從父類
ClassA objA = new ClassB();
但爲什麼我不能做反向
ClassB objB = new ClassA();
究竟發生在後臺?編譯器如何對待它?
因爲編譯器自動將派生類轉換爲基類 - 它只是將其解釋爲基類的對象,而忽略其他屬性。但是要將對象轉換爲派生類,它以前一定是該派生類的對象,編譯器希望您明確定義該類。但即使你明確地定義了轉換,它也不會工作,因爲該對象從來不是派生類型的。
你的意思是在這裏放置一些繼承嗎?我在「ClassA」是基類的基礎上回答了這個問題,但沒有仔細閱讀你的問題。 – Bathsheba
沒有繼承:'ClassA objA = new ClassB();'也是行不通的。 –
你忘了繼承一些東西?當前的代碼不會編譯,也不會*「我可以做」*部分將工作。 – Sinatr