java类各模块的加载顺序

1.单纯无父类的类  各代码块的执行顺序

public class Man {


    public Man() {
        System.out.println(" Man构造函数运行了。。。");
    }

    private Person person = new Person();

    private static int x = 100;

    public static void px() {
        System.out.println("px 都输出了");
    }

    static {
        System.out.println("静态块运行了。。。");
    }

    private static Animal_1 animal_1 = new Animal_1();


    private static Animal animal = new Animal();

}

执行结果:

            x=100先执行了
            静态块运行了。。。
            Animal_1 run...
            Animal run...
            初始化了Peron类
            Man构造函数运行了。。。

执行顺序:

        a. 先找静态,静态模块先执行如静态变量、静态代码块等(静态方法除外),从上往下依次执行。

        b. 执行非静态上述代码块。

        c. 执行构造方法。到此就结束了。


2.有父类的子类,各代码块的执行顺序,其中有同名的变量和方法,有同名静态属性。

public class Bird extends Animal {

    public Bird() {
        System.out.println("Bird 构造函数....");
    }

    public void print(){
        System.out.println("I'm bird!");
    }

    private Person person = new Person();

    public static int x = 10;

    public static void px() {
        System.out.println("px 都输出了");
    }

    static {
        System.out.println("Bird静态块运行了。。。");
    }

    private static Animal_1 animal_1 = new Animal_1();

    public static void pp(){
        System.out.println("I'm bird pp!");
    }

}
public class Animal {
    public Animal() {
        System.out.println("Animal run...");
    }

    private Person person = new Person();

    public static void px() {
        System.out.println("px 都输出了");
    }

    static {
        System.out.println("Animal静态块运行了。。。");
    }

    public static int x = 10;

    private static Animal_1 animal_1 = new Animal_1();

    public void print(){
        System.out.println("I'm animal!");
    }

    public static void pp(){
        System.out.println("I'm animal pp!");
    }
}

Animal静态块运行了。。。
Animal_1 run...
Bird静态块运行了。。。
Animal_1 run...
初始化了Peron类
Animal run...
初始化了Peron类
Bird 构造函数....

执行顺序:

              a. 先找父类的静态,静态模块先执行如静态变量、静态代码块(静态方法除外),从上往下依次执行。

              b. 子类的静态如上顺序执行。

              c. 父类非静态模块 如上按顺序执行,然后父类构造函数。

              d.子类非京台模块  如上按顺序执行,然后子类构造函数。结束!






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值