先看下代码:
package com.laos.util.init;
public class Person {
private CommonObj obj = new CommonObj("person private");
static CommonObj obj1 = new CommonObj("person static");
public CommonObj obj2 = new CommonObj("person public");
public Person(){
CommonObj obj1 = new CommonObj("person constructor");
}
public static void main(String[] args){
Person p = new Person();
}
}
package com.laos.util.init;
public class Hanmeimei extends Person {
public Hanmeimei(){
CommonObj obj = new CommonObj("Hanmeimei constructor");
}
static CommonObj objh1 = new CommonObj("Hanmeimei static");
private CommonObj objh2 = new CommonObj("Hanmeimei private");
public static void main(String[] args){
Hanmeimei hmm = new Hanmeimei();
}
}
执行结果如下:
person static
Hanmeimei static
person private
person public
person constructor
Hanmeimei private
Hanmeimei constructor
看执行结果可知,执行顺序:parent static --> child static --> parent no static --> parent constructor --> child no static --> child constructor
把握两条原则:第一 先父类后子类
第二 静态域 非静态域 构造器