/*
构造函数的this和super的调用
*/
class A
{
public static void main(String[] args)
{
A a=new A();
B b=new B();
B b=new B(1);
}
A(){
System.out.println("A");
}
A(int i){
this();
System.out.println("AA");
}
}
class B extends A
{
B(){
super();
System.out.println("B");
}
B(int i){
super(i);
System.out.println("BB");
}
}
/*
1 输出结果:啥也没输出
2 输出结果:A B
3 输出结果:A AA BB
this和super的区别:两者的调用很相似,区别在于
super调用的是其父类的构造方法,this调用的是同一个类中重装的构造方法;
使用super调用父类构造方法时必须出现在子类构造方法的第一行,两者不能同时出现。
子类构造方法的调用父类构造方法的主要有一下几种情况:
1 子类构造方法执行体的第一行代码使用super显示调用父类构造方法,
系统将根据super调用里传入的实参列表调用父类对应的构造方法。
2 子类构造方法执行体的第一行代码使用this显示调本类中重载构造方法,
系统将根据this调用里传入的实参列表调用本类另一个的构造方法,
执行本类中另一个构造方法时即会调用父类的构造方法。
3 子类构造方法中既没有super调用,也没有this调用,系统将会在执行子类构造方法之前,
隐式调用分类无参数的构造方法。
*/