-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