2

可能重复:
在显式调用构造函数时无法引用实例方法

我一直在尝试这样做很长时间。

public class bb extends test {

    int t = 23;

    public bb() {
        super(t); //**This is the place that error comes**
        // TODO Auto-generated constructor stub
    }

    public bb(int v) {
    }
}

public class test {

    public test() {
        // TODO Auto-generated constructor stub
    }

    public test(int v) {
        // TODO Auto-generated constructor stub
    }
}

控制器类

class s {   
    public static void main(String[] args) {

        bb sd = new bb();
        System.out.println("sdfsdfsdfd");
    }
}

这是随之而来的错误。我想知道为什么不能将实例变量传递给超类构造函数?我怀疑这是因为构造函数没有可访问的实例。

线程“main”java.lang.Error 中的异常:未解决的编译问题:在显式调用构造函数时无法引用实例字段 t

4

1 回答 1

9

如果您将该变量作为static变量,则该错误将消失..发生这种情况是因为

Instance Variables在调用其构造函数后创建,但在这种情况下,在

child's constructor它的父构造函数被执行..这意味着实例变量/对象

堆中不存在子类。或者换句话说,它们还没有建造出来..但以防万一

他们是static variables第一个被执行的,因此他们有一些价值并且有效

完全没问题。。

于 2011-08-02T05:29:06.367 回答