先说结论,实例化一个类时,先初始化静态成员变量,再初始化成员变量,最后初始化构造器。其中,静态成员变量仅初始化一次,而成员变量的初始化顺序与类中定义的顺序有关(定义靠前的先初始化)。代码如下:
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();
}
}
运行结果如下:
----------创建一只哈士奇,真调皮----------
空气真是小清新呀...
今天天气真好...
在外面放肆的奔跑...
我是一只可爱的小狗。
----------创建一只金毛,大暖男----------
今天天气真好...
在外面放肆的奔跑...
我是一只可爱的小狗。
当然,这里的例子有个问题,哈士奇和金毛不能共用同一个鼻子(=^_^=)。