没错 你建立的不就是testl类吗 当然用你自己定义的toString()了
你学过C++吗 java 不用像C++是的声明虚函数 
java所有的方法都是动态绑定的 就是说所有的都是"虚函数"
明白不

解决方案 »

  1.   

    在System.out.println(x);时会调用x.toString()方法,在这个过程中先执行System.out.println(j);然后将返回值“no”输出。
      

  2.   

    晕了,我学过C++问题是我根本就没有在test里定义toString()啊,它没占位符怎么虚的起来??OK,如果照这样说的话,你看看第二题,我只不过把toString()改成了fun(),它怎么不
    虚了呢????
    高手解答
      

  3.   

    至于你说的下一种情况我想是因为编译的问题,也就是说你是先在test中定义fun()方法;绕编译成功,然后将test中的fun()方法去掉以后单独编译的其他两个文件。这当然会java.lang.NoSuchMethodError的错误。
      

  4.   

    因为在内存中,test对象拥有指向toString()方法的指针,而这个指针被赋值指向了test1()的toString()方法。
    在fun版本中,test对象没有指向fun()方法的指针区域。
      

  5.   

    所有的类都继承的Object类,在Object类中定义了toString()方法,所以不管你的式显类是否显式的定义toString()方法都会存在。
      

  6.   

    toString()函数是每个Java类都有的,即使你没有定义,系统也默认给你写一个。
    这个函数的作用是给出这个类的描述信息(在直接打印类时调用),系统自带的toString()会打印“类名@内存地址”,举个例子:/*A没有定义toString,系统自带*/
    class A {
    int a;
    public A() {
    a = 10;
    }
    }/*B实现了toString,调用时用这个了*/
    public class B {
    int b;
    public B() {
    b = 11;
    }
    public String toString() {
    String msg = "Class B: " + b;
    return msg;
    } public static void main(String[] args) {
    A a = new A();
    B b = new B();

    System.out.println(a);
    System.out.println(b);
    }
    }
      

  7.   

    你现在rebuild一下这3个类文件,应该会编译不通过的。
      

  8.   

    class A {
    int a;
    public A() {
    a = 10;
    }
    }/*B实现了toString,调用时用这个了*/
    public class B {
    int b;
    public B() {
    b = 11;
    }
    public String toString() {
    String msg = "Class B: " + b;
    return msg;
    } public static void main(String[] args) {
    A a = new A();
    B b = new B();

    System.out.println(a);
    System.out.println(b);
    }
    }
    ------------------------------------------------------------------------这题输出A@126b249
            Class B:11这并没能说明什么问题。A继承自Object,A中并没有定义toString(),
    A a = new A(); 
    System.out.println(a);
    这当然会调用Object类的toString()
    B中定义了toString(),
    B b = new B();
    System.out.println(b);
    这当然会调用B的toString()
    -------------------------------------------------------但这些对我所问的问题有何联系呢?请指教再声明,我就对没有绕编译
      

  9.   


     wdong18(东东) :因为在内存中,test对象拥有指向toString()方法的指针,而这个指针被赋值指向了test1()的toString()方法。
    在fun版本中,test对象没有指向fun()方法的指针区域。-------------------------------多谢,我彻底明白了。原来是继承链的关系
      

  10.   

    OBJECT 都有tostring()方法
    却没fun()方法    :)