Java类和方法的加载顺序
其他
2020-04-14 21:34:08
阅读次数: 0
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的静态字段 : 0 A的静态代码块 B的静态字段 : 0 B的静态代码块 A的成员变量 : 0 A的非静态代码块 A的构造器 B的成员变量 : 0 B的非静态代码块 B的构造器 ------ A的成员变量 : 0 A的非静态代码块 A的构造器 B的成员变量 : 0 B的非静态代码块 B的构造器
父类的静态字段——>父类静态代码块——>子类静态字段——>子类静态代码块——>父类成员变量(非静态字段)
——>父类非静态代码块——>父类构造器——>子类成员变量——>子类非静态代码块——>子类构造器 |
学习 圣斗士Morty 原文连接
转载自www.cnblogs.com/super-x/p/12701193.html