"ヾ(◍°∇°◍)ノ゙加油哟~","愿我们不负昭华,以梦为马!","愿我们历尽千帆,归来仍是少年!"

Java类实例化时执行顺序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package com.ruoyi;
 
public class Test2 {
 
    public static void main(String[] args) {
        son sons=new son();
    }
}
 
class parent{
    private static  int a = 1;
    private static  int b;
    private int c = initc();
    static {
        b=2;
        System.out.println("1.父类静态代码块:赋值b成功");
        System.out.println("1.父类静态代码块:a的值"+a);
        System.out.println("1.父类静态代码块:b的值"+b);
    }
    int initc(){
        System.out.println("3.父类成员变量赋值:---> c的值"+c);
        this.c=12;
        System.out.println("3.父类成员变量赋值:---> c的值"+c);
        return c;
    }
    public parent(){
        System.out.println("4.父类构造方式开始执行---> a:"+a+",b:"+b);
        System.out.println("4.父类构造方式开始执行---> c:"+c);
    }
}
 
class son extends parent{
    private static  int sa=1;
    private static  int sb;
    private   int sc=initc2();
    static {
        sb=3;
        System.out.println("2.子类静态代码块:赋值sb成功");
        System.out.println("2.子类静态代码块:sa的值"+sa);
        System.out.println("2.子类静态代码块:sb的值"+sb);
    }
    int initc2(){
        System.out.println("5.子类成员变量赋值--->:sc的值"+sc);
        this.sc=12;
        return sc;
    }
    public son(){
        System.out.println("6.子类构造方式开始执行---> sa:"+sa+",sb:"+sb);
        System.out.println("6.子类构造方式开始执行---> sc:"+sc);
    }
}

  执行顺序:

1、父类静态代码块

2、子类静态代码块

3、父类成员变量赋值

4、父类构造方法赋值

5、子类成员变量赋值

6、子类构造方法开始赋值

7、子类构造方式开始执行

posted @   深夜独行侠  阅读(268)  评论(1)    收藏  举报
编辑推荐:
· Java虚拟机代码是如何一步一步变复杂且难以理解的?
· 领域驱动的事实与谬误 一 DDD 与 MVC
· SQL Server 2025 中的改进
· 当数据爆炸遇上SQL Server:优化策略全链路解析
· 记录一次线上问题排查:JDK序列化问题
阅读排行:
· 一个包含 80+ C#/.NET 编程技巧实战练习开源项目!
· Excel百万数据高性能导出方案!
· 揭秘 AI 工具的系统提示词「GitHub 热点速览」
· DeepWiki:AI驱动、免费且实用的 GitHub 源码阅读与分析神器!
· JavaScript 没有“包”
点击右上角即可分享
微信分享提示