class Square
{
private double border;

public Square()
{
this(border);   //这里出错
} public Square(double border)
{
System.out.println(border);
}
}为什么会出现错误?
Cannot refer to an instance field border while explicitly invoking a constructor
border不是初始化了才执行构造函数的吗?

解决方案 »

  1.   

    private double border;换成static则可以~
      

  2.   

    通过无参构造函数初始化成员变量这个得先调用父类的构造方法才能对border初始化而父类的构造函数是子类构造函数的第一条语句而你现在是this 引用是第一句,那是错误的而用static成员变量在引用之前就已经存在不用对其初始化就可以引用,所以这个时候的this引用就可以作为子类的构造函数的第一条语句
      

  3.   


    - Cannot refer to 'this' nor 'super' while explicitly invoking a 
     constructor
    - Cannot refer to an instance field border while explicitly invoking a 
     constructor