为什么我们不能将实例变量传递给超类构造函数?

时间:2011-08-02 05:15:10

标签: java scjp

  

可能重复:
  Cannot refer to a instance method while explicitly invoking a constructor

我一直试图这么做。

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

1 个答案:

答案 0 :(得分:7)

如果将该变量设为static变量,则错误将消失..这是因为

一旦调用了构造函数,就会创建

Instance Variables,但在这种情况下,在

之前

child's constructor其父构造函数被执行..这意味着

的实例变量/对象 堆中不存在

子类。或换句话说,它们尚未构建......但是以防万一

<{1>} static variables他们是第一个被执行的人,因此他们有一些价值观并且有效。

非常好..

相关问题