java子类调用父类的构造函数-----super(),自我理解。
1.子类不能继承父类的构造函数,但是可以调用父类的构造函数
2.如果父类没有定义构造函数,系统会默认定义一个无参无返回值的构造函数,子类继承时无需在子类构造函数中==显式 == 调用super();
(即子类的构造函数中默认调用父类的无参构造函数,只不过第一行代码:super();一直被省略了)。
3.如果父类有有参构造函数,则子类必须在自己的构造函数中显示的调用父类的构造函数即super(参数名)。
如果父类的构造函数只有一个,且修饰符是private,则不可以被继承。
4.如果子类的某个构造函数想要调用父类的其他带参构造函数,在构造函数第一行添加super(args1,args2…);(参数的多少根据想调用父类构造函数的形参而定)
5.如果子类的构造函数在第一行super(args1,args2…);调用了父类的其他有参构造函数,那么子类的该构造函数不会再调用父类的默认构造函数
继承中的构造方法的执行顺序:父类有构造函数,子类也写构造方法的时候必须显示的调用父类的构造方法【子类在创建对象的时候,掉用构造方法的顺序是:
第一步:调用父类的构造方法
第二部:调用子类的构造方法】
public class Father {
public String name;
public Father(String name) {
this.name = name;
}
}
public class Son extends Father{
public Son(String name) {
super(name);//必须调用,否则他会默认调用父类的无参构造函数,而父类的无参构造函数已经被有参的覆盖,所以找不到
}
}