Bootstrap

JAVA中子类会不会继承父类的构造方法

总结:

继承中的子类实例化的过程:

--->先调用父亲的构造方法,然后再执行子类的构造方法

1.子类不能继承父类的构造函数,但是可以调用父类的构造函数

2.如果父类没有定义构造函数,系统会默认定义一个无参无返回值的构造函数,子类继承时无需在子类构造函数中==显式 == 调用super();
(即子类的构造函数中默认调用父类的无参构造函数,只不过第一行代码:super();一直被省略了)。

3.如果父类有有参构造函数,则子类必须在自己的构造函数中显示的调用父类的构造函数即super(参数名)。
如果父类的构造函数只有一个,且修饰符是private,则不可以被继承。

4.如果子类的某个构造函数想要调用父类的其他带参构造函数,在构造函数第一行添加super(args1,args2…);(参数的多少根据想调用父类构造函数的形参而定)

5.如果子类的构造函数在第一行super(args1,args2…);调用了父类的其他有参构造函数,那么子类的该构造函数不会再调用父类的默认构造函数。


Part2

子类实例化对象时,会先调用父类的构造方法,如果子类的构造方法没有显式的调用父类的构造方法,默认调用super();
子类要使用父类有参的构造方法,使用super(参数)形式,且super()必须是子类构造方法中的第一行语句。
如果父类没有不带参数的构造方法,且子类的构造方法中有没有显式的调用父类其他构造方法,则java编译器会报错

父类无参+子类无参=两者都输出(父类先、子类后)
父类(无参)++子类有参(没有super父类有参)=父类无参+子类有参

父类(无参+有参)++子类无参=父类无参+子类无参
父类(无参+有参)++子类有参(super父类有参)=父类有参+子类有参【用无参会报错,因为子类没写无参,但写了有参,不默认生成无参了】
父类(无参+有参)++子类有参(没有super父类有参)=父类无参+子类有参
父类(无参+有参)++子类空=父类无参【默认生成无参了】


父类(有参)++子类无参=报错


另外:方法是没有继承一说的,只有覆写或者重载,类和类之间才能叫继承。

参考:

JAVA中子类会不会继承父类的构造方法_NathanniuBee的博客-CSDN博客

java 子类的构造函数都必须要super();吗?_Lawliet0307的博客-CSDN博客

;