为什么这样实例化通不过
using System;
class Class1
{
}
class Class2:Class1 //派生
{
}
class MainClass
{
static void Main()
{
// Class1 a = new Class2(); // 注释下面这句没问题,成功通过
Class2 a = new Class1(); //注释上面,为什么这里通不过,上句为什么通的过,说说原理,谢谢
Console.Read();
}
}
------解决方案--------------------我试了一下,不仅仅是变量名的问题,你在仔细看看继承,class2继承自class1,所有的class2都可以隐式的转换成class1,但是class1只能显式的转换成class2.
------解决方案--------------------Class2继承Class1。1有的2都有,而2有的1不一定有
比如:b是a的孩子,a拥有的东西都给了b,即a拥有的b都拥有,而b拥有的东西它的父亲不一定拥有
------解决方案--------------------只能用父类去实例化一个子类的对象
------解决方案--------------------对象的引用和 对象 是两回事。。。
可以把一个对象赋值给 他的父类引用。却不可向低传递引用。类 和 类型 不是一回事,严格说来。