Java类中成员初始化顺序

先说结论,实例化一个类时,先初始化静态成员变量,再初始化成员变量,最后初始化构造器。其中,静态成员变量仅初始化一次,而成员变量的初始化顺序与类中定义的顺序有关(定义靠前的先初始化)。代码如下:

class Dog {

    Eye twoEyes = new Eye();
    public static Nose nose = new Nose();

    Dog() {
        System.out.println("我是一只可爱的小狗。");
    }

    Leg fourLegs = new Leg();
}

class Eye {

    Eye() {
        System.out.println("今天天气真好...");
    }
}

class Leg {
    Leg() {
        System.out.println("在外面放肆的奔跑...");
    }
}

class Nose {
    Nose() {
        System.out.println("空气真是小清新呀...");
    }
}

public class TestJava {

    private static final Logger LOGGER = LoggerFactory.getLogger(Test.class);

    public static void main(String[] args) {
        System.out.println("----------创建一只哈士奇,真调皮----------");
        Dog husky = new Dog();
        System.out.println("----------创建一只金毛,大暖男----------");
        Dog goldenRetriever = new Dog();
    }
}

 

运行结果如下:

----------创建一只哈士奇,真调皮----------
空气真是小清新呀...
今天天气真好...
在外面放肆的奔跑...
我是一只可爱的小狗。
----------创建一只金毛,大暖男----------
今天天气真好...
在外面放肆的奔跑...
我是一只可爱的小狗。

 

当然,这里的例子有个问题,哈士奇和金毛不能共用同一个鼻子(=^_^=)。

你可能感兴趣的:(Java)