Java static变量、成员变量、构造函数 三者的初始化顺序

Java代码中父类和子类中,static变量 --  成员变量  --  构造函数 三者的调用先后顺序:

       先初始化父类Static --> 再初始化子类的Static -->  再初始化父类的其他成员变量->父类构造方法->子类其他成员变量->子类的构造方法。

    系统默认值的给予比通过等号的赋予先执行。

      一个类中的static变量或成员变量的初始化顺序,是按照声明的顺序初始化的。

 

 

public class Main {
    
    public static void main(String[] args) {
        B b = new B();
    }
    
    public static class A {
        public static MyClass1 myClass1 = new MyClass1();
        private MyClass2 myClass2 = new MyClass2();
        
        A(){
            System.out.println("A的构造函数");
        }
    }
    
    public static class B extends A {
        public static MyClass3 myClass3 = new MyClass3();
        private MyClass4 myClass4 = new MyClass4();
        
        B(){
            System.out.println("B的构造函数");
        }
    }
    
    public static class MyClass1 {
        MyClass1(){
            System.out.println("MyClass1的构造函数");
        }
    }
    
    public static class MyClass2 {
        MyClass2(){
            System.out.println("MyClass2的构造函数");
        }
    }
    
    public static class MyClass3 {
        MyClass3(){
            System.out.println("MyClass3的构造函数");
        }
    }
    
    public static class MyClass4 {
        MyClass4(){
            System.out.println("MyClass4的构造函数");
        }
    }
    
}

 

  代码运行的结果是:

    MyClass1的构造函数
    MyClass3的构造函数
    MyClass2的构造函数
    A的构造函数
    MyClass4的构造函数
    B的构造函数

  

            

 

posted on 2014-03-03 20:40  张井路  阅读(573)  评论(0)    收藏  举报

导航