package com.superx.hello;public class demo1 { public static void main(String[] args) { A a1 = new B(); System.out.println("------"); a1 = new B(); }}class A { private static int numA; private int numA2; static { System.out.println("A的静态字段 : " + numA); System.out.println("A的静态代码块"); } { System.out.println("A的成员变量 : " + numA2); System.out.println("A的非静态代码块"); } public A() { System.out.println("A的构造器"); }}class B extends A { private static int numB; private int numB2; static { System.out.println("B的静态字段 : " + numB); System.out.println("B的静态代码块"); } { System.out.println("B的成员变量 : " + numB2); System.out.println("B的非静态代码块"); } public B() { System.out.println("B的构造器"); }}
结果:
A的静态字段 : 0A的静态代码块B的静态字段 : 0B的静态代码块A的成员变量 : 0A的非静态代码块A的构造器B的成员变量 : 0B的非静态代码块B的构造器------A的成员变量 : 0A的非静态代码块A的构造器B的成员变量 : 0B的非静态代码块B的构造器
父类的静态字段——>父类静态代码块——>子类静态字段——>子类静态代码块——>父类成员变量(非静态字段)——>父类非静态代码块——>父类构造器——>子类成员变量——>子类非静态代码块——>子类构造器
学习 圣斗士Morty 原文连接