public class C { int i; C(){
}

C(int i){
this.i=i;
}

C m (){
return this;
}
public static void main(String[] args) {
new C().m();
new C(1).m();
}}
类C中有两个构造器,一个有参,一个无参,一个方法m,请问m被调用时,return this语句返回的是哪一个构造器构造的对象?
(new C().m();和new C(1).m();分别返回的是c()还是c(i)构造的对象),为什么?
谢谢

解决方案 »

  1.   

    new C().m()返回的是不带参数的构造对象
    而new C(1).m()则返回的是带了参数的构造对象
    你在C里面加一个方法来打印i的值,就很清楚了。
      

  2.   

    new C().m()返回的是c()对象
    new C(1).m()返回的是c(i)对象
    new一个对象是会寻找相匹配的构造器
      

  3.   


    package D13;public class c {
    int i;
    c() {
    System.out.println("default init");
    }
    c(int i) {
    this.i = i;
    System.out.println("Number init");
    }
    c m() {
    return this;
    }
    public static void main(String[] args) {
    new c().m();
    new c(1).m();
    }
    }结果是:   
    default init
    Number init
      

  4.   

    具体调用哪个构造器是看你参数列表来定的,和方法m()中的return this没什么关系
      

  5.   

    this 表示引用的是当前对象,如new C().m(); ,那里面的this当然代表无参的构造器呀!假如new C(1).m(); ,那里面的this当然代表有参的构造器呀!
      

  6.   

    第一个是调用C()创造的对象
    第二个是通过调用C(int i)创造的对象
    很清楚吧