aa.a(b);    //  调用实例aa中的函数a
a(b)        //  等同于this.a(b),调用当前实例中的函数a

解决方案 »

  1.   

    同意楼上的说法,只有你在abcd类里面重写了方法a时,才有区别。
    重写后:
    aa.a(b);//调用的是abc类里面的a。
    a(b)//调用的是abcd里面你重写后的方法a 
      

  2.   

    string b;
    abc aa;         //    你们有没有看这一句啊
    aa.a(b);//这两
    a(b)//种调用有什么区别?
    abc aa=new abcd();
    aa.a(b);
    你认为是调的谁的a?
      

  3.   

    abc aa=new abcd();
    你创建的是abcd的一个实例,
    但是转化成了abc类型,所以调用的应该是abc的方法,
    如果你在abcd中重载了abc中的方法,那abc中方法可能被覆盖,
    当然你调用的还是abc的方法,不同的是abc中被覆盖的方法。
    记住只有实例方法才能被覆盖,类方法是不能覆盖的。
      

  4.   

    ft,那什么是多态,java干吗还多态
      

  5.   

    调用的宿主是不同的对象实例
    直接调用只能是这个对象的成员函数才可以,默认宿主是this
    对象实例加点调用,默认宿主是至指定的对象实例
      

  6.   

    "用对象加点调用方法“--:如果是调用实列变量或方法,就必须“用对象加点调用方法
    ”直接调用方法”:如果是调用静态变量和方法(static),就可以通过两种方法来实现。
      

  7.   

    我觉得楼主连基本的OO都没有理解,你怎么能分得清呢,建议你先把OO学习扎实了再来学java,急功近利适得其反
      

  8.   

    以前是vb现在boss让用java做东西啊~!
    没办法啊~!
    很急啊~!
      

  9.   

    SAsura(SAsura我的qq 是712779啊~!
    希望能得到你的帮助阿谢谢你啊
      

  10.   

    对了我忽略了一点;abc aa;只是定义了一个abc类型的变量。
    aa还不能使用。因为还没有分配内存空间。
      

  11.   

    1.严格来讲二者是有区别的:
      abc aa = new abc();
        aa.a(b) 是在子类abcd 中实例化了一个abc对象;
      而a(b)方法是直接调用父类的方法,在这种情况下,当我们需要实例化一个abcd对象时,a(b)方法是调用父类的方法,而aa.a(b)是调用abcd中这个abc对象的方法,也就是说,如果二者同时存在,abcd对象会涉及到两个abc的实例,一个是在调用abcd构造函数时会生成一个父类abc的实例,一个是abc aa得到abc对象。2. 如果仅在 “xvivian(乖妹妹) ”小姐所举的例子中来说,二者没有实质上的区别。但如果在一个更大的范围内来讨论这个问题才有意义。如果在一个面向对象的编程环境中,aa.a(b)是对对象aa发送消息。3. 建议去看一下"thinking in java"这本书。
      

  12.   

    aa.a(b)是直接调用aa的a方法
    而a(b)是会先考虑自己(abcd)的a方法,如果重载了就调用自己的a方法了;
    但此题中却看不出来,呵呵