Java 为什么可以';我们不能将实例变量传递给超类构造函数吗?

Java 为什么可以';我们不能将实例变量传递给超类构造函数吗?,java,scjp,Java,Scjp,可能重复: 我已经试着这么做很长时间了 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 tes

可能重复:

我已经试着这么做很长时间了

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中出现异常。错误:未解决的编译问题:
在显式调用构造函数时无法引用实例字段t

如果将该变量设置为
静态
变量,则错误将消失。。这是因为

实例变量
在调用其构造函数后创建,但在本例中,在

子构造函数
执行其父构造函数。。这意味着的实例变量/对象

堆中不存在子类。或者换句话说,它们还没有建成。。但万一

静态变量中
它们是第一个被执行的变量,因此它们有一些值,并且是有效的


非常好。

如果将该变量设置为
静态
变量,则错误将消失。。这是因为

实例变量
在调用其构造函数后创建,但在本例中,在

子构造函数
执行其父构造函数。。这意味着的实例变量/对象

堆中不存在子类。或者换句话说,它们还没有建成。。但万一

静态变量中
它们是第一个被执行的变量,因此它们有一些值,并且是有效的


非常好。

我仍然有一个问题,我将用一个新问题来解决它。…谢谢你所做的一切我仍然有一个问题,我将用一个新问题来解决它。…谢谢你所做的一切