Java 类中初始化的顺序
为什么在调用构造函数之前初始化类变量?如果所讨论的类没有扩展任何其他类,但构造函数首先被调用,而如果所讨论的类正在扩展其他类,则初始化类变量 e、 假设我有一节课Java 类中初始化的顺序,java,class,inheritance,Java,Class,Inheritance,为什么在调用构造函数之前初始化类变量?如果所讨论的类没有扩展任何其他类,但构造函数首先被调用,而如果所讨论的类正在扩展其他类,则初始化类变量 e、 假设我有一节课 public class Windows { public Windows() { System.out.println("in window"); } } 我有一个基类 public class BaseClass { public BaseClass() { System.
public class Windows {
public Windows() {
System.out.println("in window");
}
}
我有一个基类
public class BaseClass {
public BaseClass() {
System.out.println("in base");
}
}
最后我还有一节课
public class ChildClass extends BaseClass {
Windows w = new Windows();
public ChildClass() {
System.out.println("in subclass");
}
public static void main(String[] args) {
System.out.println(new ChildClass());
}
}
将导致
在基地
橱窗里
在子类中
这表明基类构造函数被调用了,这意味着子类构造函数被调用了,但在基类构造函数完成后,为什么字段被初始化了呢?i、 是不是应该是这样
在基地
在子类中
橱窗里
这可以解释一些事情
如果我这样做了,再来一次
public class ChildClass {
Windows w = new Windows();
public ChildClass() {
System.out.println("in subclass");
}
public static void main(String[] args) {
System.out.println(new ChildClass());
}
}
我去拿
橱窗里
在子类中
这表明在构造函数窗口字段初始化之前。困惑的如果我添加一些静态字段,图片甚至会变得混乱
一些解释可能是JVM首先初始化基类,然后是当前类的字段,最后是构造函数。这是真的吗
一些解释会很好 关于Java,你最好的朋友是。关于你的问题,你可以找到答案: 就在对新创建的对象的引用作为 结果,将处理指示的构造函数以初始化新的 对象,请使用以下过程:
你可能想看看这个:如果有某种详细描述Java语言的规范,比如说Java语言规范就好了。这里没有“类变量”。它们将是静态的。有实例变量。谢谢,正是我要找的!然而你选择了一个奇怪的地方去看。你应该从JLS开始。我有点困惑。。。JLS?=Java语言规范?