类和对象的初始化顺序

父类

package com.day06;

public class StaticDemo {
    
    //静态代码块
    int num=3;
    static{
        System.out.println("父类静态代码块 --A");
    }
    
    //构造代码块
    {
        System.out.println("父类构造代码块 ---A  "+this.num);
        
    }

    public StaticDemo(){
        System.out.println("父类构造方法---A");
    }
    public void show(){
        System.out.println("父类普通方法--- A");
    }

}

子类:

package com.day06;

public class StaticDemoB extends StaticDemo {
    //静态代码块
        int num=3;
        static{
            System.out.println("子类静态代码块 B");
        }
        
        //构造代码块
        {
            System.out.println("子类构造代码块 B  "+this.num);
            
        }

        public StaticDemoB(){
            System.out.println("子类构造方法 B" );
        }
        public void show(){
            System.out.println("子类普通方法 B");
        }
}

示例一:实例化父类

package com.day06;

public class StaticDemoTest {

    public static void main(String[] args) {
        //new StaticDemo().show();
        StaticDemo sd=new StaticDemo();
        sd.show();
        
    }

}

结果:

父类静态代码块 --A
父类构造代码块 ---A  3
父类构造方法---A
父类普通方法--- A

示例二、实例化子类

package com.day06;

public class StaticDemoTest {

    public static void main(String[] args) {
        //new StaticDemoB().show();
        StaticDemoB sdb=new StaticDemoB();
        sdb.show();
        
    }

}

结果:

父类静态代码块 --A
子类静态代码块 B
父类构造代码块 ---A  3
父类构造方法---A
子类构造代码块 B  3
子类构造方法 B
子类普通方法 B
原文地址:https://www.cnblogs.com/liunanjava/p/4788165.html