代码解释:
package com.dyy.java;
/**
* 加载顺序:
* 父类静态域加载(静态域:静态变量的赋值,静态块)
* 子类静态域加载
* 父类非静态域(非静态域:成员变量的赋值,非静态块)
* 父类构造函数
* 子类非静态域
* 子类构造函数
*/
public class ObjectLoadProcessDemo {
public static void main(String[] args) {
Child demo = new Child();
demo.function();
System.out.println("………………………………………………");
Child child = new Child();
child.function();
}
}
class Parent {
int a = 10;
static int b = 11;
// 静态代码块
static {
System.out.println("Parent静态代码块:b=" + b);
b++;
}
// 无参构造函数
Parent() {
System.out.println("Parent无参构造函数: a=" + a);
System.out.println("Parent无参构造函数: b=" + b);
}
// 有参构造函数
Parent(int a) {
System.out.println("Parent有参构造函数: a=" + a);
System.out.println("Parent有参构造函数: b=" + b);
}
// 代码块
{
System.out.println("Parent代码块: a=" + a);
System.out.println("Parent代码块: b=" + b);
b++;
a++;
}
// 方法
void function() {
System.out.println("Parent function run ……");
}
}
class Child extends Parent {
int x = 10;
static int y = 11;
// 静态代码块
static {
System.out.println("Child静态代码块:y=" + y);
y++;
}
// 构造函数
Child() {
System.out.println("Child构造函数: x=" + x);
System.out.println("Child构造函数: y=" + y);
}
// 代码块
{
System.out.println("Child代码块: x=" + x);
System.out.println("Child代码块: y=" + y);
y++;
x++;
}
// 方法
void function() {
System.out.println("Child function run ……");
}
}