Java类初始化过程

package org.example;


import java.util.ArrayList;
import java.util.Scanner;

/**
 * Hello world!
 */
public class App {
    public static void main(String[] args) throws InterruptedException {
        new Child();
    }
}
class Parent {
    String name = initName();

    static {
        System.out.println("父类静态代码块");
    }

    {
        System.out.println("父类实例代码块");
    }
    private String initName() {
        System.out.println("父类实例变量初始化: name = yang");
        return "yang";
    }
    public Parent() {
        System.out.println("父类构造方法");
    }
}

class Child extends Parent {

    static {
        System.out.println("子类静态代码块");
    }

    {
        System.out.println("子类实例代码块");
    }
    int age = initAge();//相当与实例代码块,实例代码块的执行顺序是看实例代码块的先后顺序
    private int initAge() {
        System.out.println("子类实例变量初始化: age = 10");
        return 10;
    }
    public Child() {
        System.out.println("子类构造方法");
    }
}

结果为:
父类静态代码块
子类静态代码块
父类实例变量初始化: name = yang
父类实例代码块
父类构造方法
子类实例代码块
子类实例变量初始化: age = 10
子类构造方法

你可能感兴趣的:(java,开发语言)