四年前刚学习Java遇到的问题现在看起来又忘了为什么了,真的是猴子掰苞米现学现忘。
public class Testing {
public static void main(String[] args) {
System.out.println(Student.a);
}
}
class Person{
public static int a = 10;
static {
System.out.println("父类");
}
}
class Student extends Person{
public static int b= 1000;
static {
System.out.println("子类");
}
}
为什么输出为
父类
10
子类中的静态块没有被加载?
2022.7.6号解答
public class Testing {
public static void main(String[] args) {
// Student student = new Student();
// System.out.println(student.c);
System.out.println(Student.a);
}
}
class Person{
public static int a = 10;
public int c = 5;
static {
System.out.println("父类");
}
}
class Student extends Person{
public static int b= 1000;
static {
System.out.println("子类");
}
}
通过子类引用父类的静态属性,不会导致子类初始化没初始化也就不会加载静态代码块。
如果引用父类的非静态属性子类就会被初始化