为什么我们不能从父类实例化子类对象

时间:2017-03-20 09:21:22

标签: c# oop

ClassA
{

}

ClassB : ClassA
{

}

我能做到

ClassA objA = new ClassB();

但为什么我不能反向

ClassB objB = new ClassA();

后端到底发生了什么?编译器如何对待这个?

1 个答案:

答案 0 :(得分:0)

因为编译器会自动将派生类强制转换为基类 - 它只是将其解释为基类的对象,而忽略其他属性。但是要将对象强制转换为派生类,它必须先是此派生类的对象,并且编译器希望您显式定义强制转换。但即使您明确定义了强制转换,它也不会起作用,因为该对象从未属于派生类型。