日期:2014-05-18  浏览次数:20780 次

为什么这样实例化通不过

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拥有的东西它的父亲不一定拥有 

------解决方案--------------------
只能用父类去实例化一个子类的对象
------解决方案--------------------
对象的引用和 对象 是两回事。。。
可以把一个对象赋值给 他的父类引用。却不可向低传递引用。类 和 类型 不是一回事,严格说来。