首先我们先看一个段非常有代表性的代码,里面一口气牵扯到了多态和类初始化顺序知识。
public class Test {
public static void main(String[] args) {
A test = new B();
}
}
class A {
int value = 10;
A() {
System.out.println("父类构造器");
process();
}
public void process() {
System.out.println("父类的process");
value++;
System.out.println(value);
}
}
class B extends A {
int value = 12;
{
value++;
}
B() {
System.out.println("子类构造器");
process();
}
public void process() {
System.out.println("子类的process");
System.out.println(value);
value++;
System.out.println(value);
}
}
它的输出是:
父类构造器
子类的process
0
1
子类构造器
子类的process
13
14
我想现在你一定很困惑,不要慌上车!带你了解底层的原理 |