A aaa = new A();
aaa = bbb;
是一个赋值语句~~

解决方案 »

  1.   

    aaa 和 bbb 是引用类型,他们调用同一个引用的地址
      

  2.   

    aaa是A的实例,又和bbb是个什么关系呢?
      

  3.   

    将B类型转换成A类型
    如:int i=5;
        long l=i;
    是一种隐式转换
      

  4.   

    dengjiang1999:能否讲的详细一点,转换以后程序执行有何不同,函数有何不同,
      

  5.   

    这是一个多态转化问题,bbb为aaa 的子类,赋值给父类时,子类的一些特有属性会丢失,例如你在bbb中独有一个函数H(),aaa中没有,此时aaa不能调用H().
      

  6.   

    class A
    {
    public int Width;
    public int Height;
    }
    class B
    {
    public int Width;
    public int Height;
    }
    class RefValTest
    {
    public static int Main()
    {
    A a = new A();
    a.Width = 10;
    a.Height = 15;
    B b = a;
    Console.WriteLine(b.Width + b.Height);
    a.Width = 20;
    a.Height = 25;
    Console.WriteLine(b.Width + b.Height);
    }输出:
    1015;
    2025;
      

  7.   

    只是针对:
    B bbb = new B();
    A aaa = bbb; 的解释~~
      

  8.   


    这是一个多态的问题吧,主要的问题就是aaa.F()和aaa.G()调用的是两个类的方法。楼主看看关于多态的解释就明白了。
      

  9.   

    看了,不是很明确
    A aaa = bbb;
    aaa.F()为什么是 A
    aaa.G()为什么是 B?
    请指教
      

  10.   

    to hzsummer(卖女孩的小火柴): 
     
      看了,不是很明确
    A aaa = bbb;
    aaa.F()为什么是 A
    aaa.G()为什么是 B?
    请指教
      ---------
     aaa.F()是为A,但aaa.G()应该是D啊。
      

  11.   

    2 wang852963(我是一只波菜~~~) 
    不好意思,写错了
      

  12.   

    不知道我回答得对不对,各位大哥别扔我鸡蛋哟。如果有不对的帮我指正一下。谢谢using System;class A
    {
    public void F()
    {
    Console.WriteLine("A");
    }
    public virtual void G()  //虚拟一个方法
    {
    Console.WriteLine("B");
    }
    }
    class B:A  //继承类A的方法与属性
    {
    new public void F()   //通过new关键字显式隐藏从A类继承的方法
    {
    Console.WriteLine("C");
    }
    public override void G()  //通过override关键字重写A类中的虚拟方法G()
    {
    Console.WriteLine("D");
    }}
    class Test
    {
    public static void Main()
    {
    B bbb = new B();//创建B类的实例
             A aaa = bbb;  //创建A类的实例,引用B类的方法,(小弟也不知道这如何才说得更贴切)
    B ccc = bbb;  //创建B类的实例,引用B类的方法
    aaa.F();  结果:A  原因:调用A类的F()方法
    bbb.F();  结果:C  原因:调用B类的F()方法
    aaa.G();  结果:D  原因:因为A类的G()虚拟方法是由继承B类重写,所以是调用B类中的G()方法
    bbb.G();  结果:D  原因:调用B类的G()方法
    ccc.F();  结果:C  原因:调用B类的F()方法
    ccc.G();  结果:D  原因:调用B类的G()方法
    }
    }
      

  13.   

    这就是微软所自我夸耀的向下继承的方法,微软对多态技术认为,以后的类能继承现在的类 
    很正常,但是要让现在的类能继承未来的类,这就是令人十分激动的事情,你所问的问题就是是这样,说来说去还是多态的特点,什么时候你把《深入浅出MFC》看一下
    你定然会恍然大悟了 呵呵
      

  14.   

    你就记住,当子类转换成父类时,只有在父类中定义成虚拟的方法并在子类中override的方法在被子类调用时才使用子类的方法!看看《深入浅出MFC》吧!
      

  15.   

    相当于
    A aaa = new A();//建立classs A的一个实例
    aaa = bbb;//给aaa赋值
      

  16.   

    to axia_T(瓶子):aaa = bbb;赋值究竟是赋了什么值,指针?那你讲解一下aaa.f()为什么是a,而aaa.g()是d呢,看书上,我知道结果我也知道了,重载以后aaa.g()是d,但是很想知道究竟是为什么,能不能讲的深一点?