class A
    { 
    public virtual void fun()
    {
        // code
    }
    }    class B : A
    {
         // code
    }
        class Program
    {
        static void Main(string[] args)
        {
            A a = new B();        //类的实例化
        }
    }
问个类实例化的问题
A a=new A() ; 
A a=new B();
这两个实例化有啥区别呀

解决方案 »

  1.   

    A a=new A() ;//调用A自己的构造函数
    A a=new B();//调用父类B的构造函数
      

  2.   

    朋友,你弄错了吧//
    先声明了一个A类,然后用B类继承A,(B:A)
    B就是子类,A是父类A a=new A() ;//使用A类的构造函数实例化一个对象
    A a=new B();//使用子类B的构造函数实例化父类A,创建一个父类对象
      

  3.   


    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                A a = new A();
                A b = new B();
            }
        }
    }class A
    {
        internal A()
        {
            fun();
        }    public virtual void fun()
        {
            Console.WriteLine("调用 A");
        }
    }class B : A
    {
        internal B()
        {
            Console.WriteLine("调用 B");
        }
    }看这个例子
    结果
    --------------------------------调用 A
    调用 A
    调用 B
      

  4.   

    调用 A   你new 的 A 他执行了A();
    调用 A   你new B 因为继承了A 所以执行了A
    调用 B   最后回来执行自己的B()
      

  5.   

    恩这个就是多态建议看一本书<NET.框架程序设计.pdf>A a=new A() ;  
    A a=new B();第一个a指向堆中A类的一个实例,第二个a指向堆中B类的一个实例。每个实例还指向自己类的一个方法表。通过偏移指针访问的方法也不一样。构造都是先调用基类的构造器