using system;
class A
{
 public virtual void G()
  {
    Console.WriteLine("A.G");
   }
}
class D:A
    {
     public override void G()
      {
       Console.WriteLine("D.G"); 
      }
     }
 class test
{
static void Main()
{
   D d=new D();
   A a=d;
}
其中的A a=d;//a是A的对象还是实例?A a=d执行了什么?

解决方案 »

  1.   

    A a=d;这里的a是D的实例,对象和实例是一回事情,说法不同而已A a=d执行了什么?
    声明1个引用,指向d,
      

  2.   

    引用相当于个指针,栈上分配内存,指向的是对象,对象是在堆上分配内存的,只有指针才能存取它这里的a是D的实例。这么个说法,严格来说,是a指向D的实例
      

  3.   

    引用相当于个指针正确。
    栈上分配内存有些不对,引用是堆上分配内存。
    是堆还是栈不是重点。a起码不是引用。引用是一种数据类型。a属于引用类型,,因为类是引用类型。
    a是A的实例,A a=d之后,a保存了什么?是d的值?还是d的地址?