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如果将该变量设置为
静态
变量,则错误将消失。。这是因为
实例变量
在调用其构造函数后创建,但在本例中,在
子构造函数
执行其父构造函数。。这意味着的实例变量/对象
堆中不存在子类。或者换句话说,它们还没有建成。。但万一
在静态变量中
它们是第一个被执行的变量,因此它们有一些值,并且是有效的
非常好。如果将该变量设置为
静态
变量,则错误将消失。。这是因为
实例变量
在调用其构造函数后创建,但在本例中,在
子构造函数
执行其父构造函数。。这意味着的实例变量/对象
堆中不存在子类。或者换句话说,它们还没有建成。。但万一
在静态变量中
它们是第一个被执行的变量,因此它们有一些值,并且是有效的
非常好。我仍然有一个问题,我将用一个新问题来解决它。…谢谢你所做的一切我仍然有一个问题,我将用一个新问题来解决它。…谢谢你所做的一切