此题考察的是类加载器实例化时进行的操作步骤(加载–>连接->初始化)
父类静态代变量、
父类静态代码块、
子类静态变量、
子类静态代码块、
父类非静态变量(父类实例成员变量)、
父类构造函数、
子类非静态变量(子类实例成员变量)、
子类构造函数。
举例说明:
A.java
package com.qst.test;
class A {
private int a;
private static int aa = 88;
static {
System.out.println("父类代码块" +aa);
}
public A() {
this(11);
System.out.println("父类构造函数" +a);
}
public A(int a) {
this.a = a;
System.out.println("父类带参构造函数" +a);
}
public void print() {
System.out.println("父类函数" );
}
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
}
B.java
class B extends A{
private int b;
private static int bb = 100;
static {
System.out.println("子类代码块"+bb);
}
public B() {
this(12);
System.out.println("执行子类构造函数"+b);
}
public B(int b) {
this.b = b;
System.out.println("子类带参构造函数"+b);
}
@Override
public void print(){
super.print();
System.out.println("子类函数");
}
}
测试类Test001.java
public class Test001 {
public static void main(String[] args) {
B b = new B();
b.print();
}
}
输出结果:
父类代码块88
子类代码块100
父类带参构造函数11
父类构造函数11
子类带参构造函数12
执行子类构造函数12
父类函数
子类函数
由此可知实例化的顺序