ClassA
{
}
ClassB : ClassA
{
}
我能做到
ClassA objA = new ClassB();
但为什么我不能反向
ClassB objB = new ClassA();
后端到底发生了什么?编译器如何对待这个?
答案 0 :(得分:0)
因为编译器会自动将派生类强制转换为基类 - 它只是将其解释为基类的对象,而忽略其他属性。但是要将对象强制转换为派生类,它必须先是此派生类的对象,并且编译器希望您显式定义强制转换。但即使您明确定义了强制转换,它也不会起作用,因为该对象从未属于派生类型。