为了账号安全,请及时绑定邮箱和手机立即绑定

java类执行的顺序和代码的分析

标签:
Java

java类执行的顺序:
1 父类静态代码块
子类静态属性 自定义
2 子类静态代码块
父类非静态属性 自定义
3 父类匿名代码块
子类非静态属性 默认值 null
4 父类构造器 name = null
子类非静态属性 自定义
5 子类匿名代码块 name = tom
6 子类构造器

package com.free;

class HelloA {//4.进入A代码块
    static int A = 10;
    int AA = 30;
    public HelloA() {//8.执行父类构造器中的其他方法 
        System.out.println
            ("A构造器:"+AA);
        System.out.println("HelloA");
    }

    {
        System.out.println//7.执行A匿名代码块
            ("A匿名代码块:"+AA);
        System.out.println("I'm A class");
    }
    static {//5. 进入static静态代码块和静态成员赋值
        System.out.println(A);
        System.out.println
        ("HelloA:HelloB.B"+HelloB.B);

        System.out.println("static A");

    }
}

public class HelloB extends HelloA {//3.继承自A代码块,进入A
    static int B = 20;
    public int BB = 40;
    public HelloB() {
        System.out.println
            ("B构造器:"+BB);
        System.out.println("HelloB");
    }

    {
        System.out.println//9.执行子类的匿名代码块 
            ("B匿名代码块:"+BB);
        System.out.println("I'm B class");
    }
    static {//6.执行子类的静态赋值和静态代码块
        System.out.println(
                "HelloB:HelloB.B"+B);
        System.out.println("static B");
    }

    public static void main(String[] args) {//1.main方法,程序运行的入口
        new HelloB();//2.执行 B类代码块
    }

输出的结果是:10
HelloA:HelloB.B0
static A
HelloB:HelloB.B20
static B
A匿名代码块:30
I'm A class
A构造器:30
HelloA
B匿名代码块:40
I'm B class
B构造器:40
HelloB

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消