java子类对象加载顺序_java子类加载顺序(转载)

1 classGrandpa{

2 public static String p_StaticField = "祖父类--静态变量";

3 public String p_Field = "祖父类--变量";

4

5 static{

6 System.out.println(p_StaticField);

7 System.out.println("祖父类--静态初始化块");

8 }

9

10 {

11 System.out.println(p_Field);

12 System.out.println("祖父类--初始化块");

13 }

14

15 publicGrandpa() {

16 System.out.println("祖父类--构造器");

17 }

18 }

19

20 class Parent extendsGrandpa{

21

22 public static String p_StaticField = "父类--静态变量";

23

24 public String p_Field = "父类--变量";

25

26 static{

27 System.out.println(p_StaticField);

28 System.out.println("父类--静态初始化块");

29 }

30

31 {

32 System.out.println(p_Field);

33 System.out.println("父类--初始化块");

34 }

35

36 publicParent() {

37 System.out.println("父类--构造器");

38 }

39 }

40 public class SubClass extendsParent {

41

42 public static String s_StaticField = "子类--静态变量";

43

44 public String s_Field = "子类--变量";

45

46 static{

47 System.out.println(s_StaticField);

48 System.out.println("子类--静态初始化块");

49 }

50

51 {

52 System.out.println(s_Field);

53 System.out.println("子类--初始化块");

54 }

55

56 publicSubClass() {

57

58 System.out.println("子类--构造器");

59 }

60

61 public static voidmain(String[] args) {

62 System.out.println("*************in main***************");

63 newSubClass();

64 System.out.println("*************second subClass***************");

65 newSubClass();

66 }

67 }

运行结果:

祖父类--静态变量

祖父类--静态初始化块

父类--静态变量

父类--静态初始化块

子类--静态变量

子类--静态初始化块

*************in main***************

祖父类--变量

祖父类--初始化块

祖父类--构造器

父类--变量

父类--初始化块

父类--构造器

子类--变量

子类--初始化块

子类--构造器

*************second subClass***************

祖父类--变量

祖父类--初始化块

祖父类--构造器

父类--变量

父类--初始化块

父类--构造器

子类--变量

子类--初始化块

子类--构造器

加载顺序:(父类静态成员、静态代码块—>子类静态成员、静态代码块—>父类实例成员、代码块——>父类构造函数—>子类实例成员、代码块—>子类构造函数)

在加载子类时,如果继承于父类,上溯加载,如果父类之上还有父类,再上溯。最后从祖父类依次加载到子类。

先加载静态变量,再静态初始化块。

在实例对象后先加载变量,再初始化,然后调用构造方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值