子类继承父类是代码片段的执行顺序一直是面试笔试时常考的内容,下面通过代码来进行验证
父类
package com.cn.qunji.annotation;
public class TestA {
String name = "jack";
static {
System.out.println("A");
}
static {
System.out.println("A1");
}
{
System.out.println("A2");
}
public TestA() {
System.out.println("A+");
System.out.println(name);
}
}
子类
public class TestB extends TestA {
String name = "tome";
static {
System.out.println("B");
}
static {
System.out.println("B1");
}
{
System.out.println("B2");
}
public TestB() {
System.out.println("B+");
System.out.println(name);
}
}
自测类
public class Test {
public static void main(String[] args) {
TestB b = new TestB();
}
}
运行结果
A
A1
B
B1
A2
A+
jack
B2
B+
tome
由此可见顺序为:
父类静态代码块>子类静态代码块>父类代码块>父类构造方法>子类代码块>子类构造方法。
并且可以看到成员变量是不能被继承的,是属于父类私有的。