gpt4 book ai didi

java - Java 静态字段的访问和初始化顺序

转载 作者:行者123 更新时间:2023-12-02 04:58:16 27 4
gpt4 key购买 nike

考虑以下示例:

class Super{ 
static String ID = "1234";
}
class Sub extends Super{
static{ System.out.println("In Sub");
}

public static void main(String ...args){
System.out.println(Sub.ID);
}

我的理解方式是:如果这是 main 中的 new Sub() ,它将调用 Super 类的 super() 构造函数,显然首先执行静态初始化程序(如果有),然后执行 Sub 中的静态初始化程序,然后是非静态 init block 和按此特定顺序构造函数。

话虽如此,这个程序打印了“1234”,如果 Sub 没有继承静态字段怎么办,这不应该是一个编译错误吗?

最佳答案

您可以通过该类型的子类型的表达式来访问该类型的(可访问的)静态成员。在编译时,它被解析为通过声明类型(本例中为 Super)的访问。

关于java - Java 静态字段的访问和初始化顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28550536/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com