继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

Rvie
关注TA
已关注
手记 20
粉丝 14
获赞 47

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

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP