例如,在return new Contents(){};中,会创建一个继承自Contents的匿名类的对象,那这个new Contents()不是应该调用的Contents的构造函数吗。
在如果,在需要参数时,如return new Contents(i){};中,到底这个参数是由导出类传递给基类的,还是直接在基类的构造器中使用的。
求助大神。

解决方案 »

  1.   

    例如,在return new Contents(){};中,会创建一个继承自Contents的匿名类的对象,那这个new Contents()不是应该调用的Contents的构造函数吗。
    会调用,调用的是Contents的无参构造方法在如果,在需要参数时,如return new Contents(i){};中,到底这个参数是由导出类传递给基类的,还是直接在基类的构造器中使用的。
    在构造器中使用,此时你的基类应该有一个带参数的构造器
      

  2.   

    在构造子类对象之前需要构造父类对象,返回的对象还是子类对象,所以会调用父类的构造函数
    而传递的参数只是在父类的构造函数中赋值给子类继承的属性的值
    public Test1(int a)
    {
         this.a = a;//给子类继承的属性a赋值
    }
    new Test1(1)//调用父类的带参数构造函数
    {

    };
      

  3.   

    “而传递的参数只是在父类的构造函数中赋值给子类继承的属性的值”这句话,我不是很理解。例子中的,this不是应该指向的是父类对象吗,为什么会为子类继承的属性a赋值呢。
      

  4.   

    System.out.println(this.getClass());看下输出就知道 其实是子类的对象
      

  5.   

    。。离大神还有点远,只是这个地方稍微有点了解
    this在父类中的表现就是父类引用指向子类的对象,类似Base this = new Child(); 
    new 的对象是需要的,而整个过程需要构造的是一个子类的对象,构造的过程就是调用父类的构造函数完成父类的构造 然后再构造子类的