public class Test1 {
private int petalCount=0;
private String s="initial value";
Test1(int i){
petalCount=i;
System.out.println("Constrauctor petalCount="+petalCount);
}
Test1(String ss){
System.out.println("s="+ss);
s=ss;
}
Test1(int pe,String ss) {
this(pe);
this.s=ss;
}
Test1(){
this(77,"h1");
}
void pringy(){
System.out.println("pe="+petalCount+"s="+s);
}
public static void main(String[] args) {
Test1 t1=new Test1();
t1.pringy();
Test1 t2=new Test1("123");
t2.pringy();
}
private int petalCount=0;
private String s="initial value";
Test1(int i){
petalCount=i;
System.out.println("Constrauctor petalCount="+petalCount);
}
Test1(String ss){
System.out.println("s="+ss);
s=ss;
}
Test1(int pe,String ss) {
this(pe);
this.s=ss;
}
Test1(){
this(77,"h1");
}
void pringy(){
System.out.println("pe="+petalCount+"s="+s);
}
public static void main(String[] args) {
Test1 t1=new Test1();
t1.pringy();
Test1 t2=new Test1("123");
t2.pringy();
}
}
1、构造器之间可以互相调用,可以用this调用一次构造方法,有且只能一次
2、构造器调用必须置于最起始端
3、避免发生字段与参数之间的歧义,用this.s 代替s
4、除构造器外,其他方法不能调用构造方法
构造器的调用顺序
0.在一切发生之前,所有的都是二进制中的0
1.调用基类的,不断反复递归
2.按声明顺序调用成员的初始化方法
3.调用导出类构造器的主体
Ps:如果基类里有成员的初始化方法,那么其优先级比构造方法高
注意父类构造器中调用方法时的多态效应!