当前页面: 开发资料首页 → J2SE 专题 → 简单的问题,望大家帮忙
简单的问题,望大家帮忙
摘要: 简单的问题,望大家帮忙
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不是初始化了才执行构造函数的吗?
private double border;换成static则可以~
有人知道为什么吗?
?????????????
不是很难吧?我已经缩减了一些代码的了!
通过无参构造函数初始化成员变量
这个得先调用父类的构造方法才能对border初始化
而父类的构造函数是子类构造函数的第一条语句
而你现在是this 引用是第一句,那是错误的
而用static成员变量在引用之前就已经存在
不用对其初始化就可以引用,
所以这个时候的this引用就可以作为子类的构造函数的第一条语句
- Cannot refer to 'this' nor 'super' while explicitly invoking a
constructor
- Cannot refer to an instance field border while explicitly invoking a
constructor