这个东西,我总是记不住,每次都会再去TEST一下,这次先把这次TEST记录在这里。
顺序:父类定义时的赋值--父类构造函数--子类构造函数。
父类:
public class TestExtendsParent {
TestExtendsParent(){
if(str2==null){
str2=str1;//执行顺序3
}
}
protected Long outlet_id;
protected String str1="1111111";//执行顺序1;
protected String str2=str1;//执行顺序2;
public Long getOutlet_id() {
return outlet_id;
}
public void setOutlet_id(Long outlet_id) {
this.outlet_id = outlet_id;
}
public void test(){
System.out.println(str1);
System.out.println(str2);
}
}
子类:
public class TestExtendsChild extends TestExtendsParent{
TestExtendsChild(){
str1=str1+"xxx";//执行顺序4
str2=str1;
}
private Long outlet_id;
public Long getOutlet_id() {
return outlet_id;
}
public void setOutlet_id(Long outlet_id) {
this.outlet_id = outlet_id;
}
}
测试
public class TestExtends {
public static void main(String[] args){
TestExtendsParent p = new TestExtendsParent();//执行父类的赋值,构造函数。
p.setOutlet_id(10l);
TestExtendsChild c = new TestExtendsChild();//执行父类的赋值,构造函数,子类的构造函数。
c.setOutlet_id(20l);
c.test();
}
}
结果:
1111111xxx
1111111xxx