定义


Java支持单继承和多层继承,但不支持多继承
# 子类构造器及super用法



解释:子类构造器,注意是子类的构造器,不是子类的方法的第一行默认都会有super()去调用无参构造器,只不过可以省略没写而已。当然也可以自己写super(参数)必须放第一行,去调用有参数构造器。
*见下图,若父类没有无参构造器,则子类构造器(不是子类方法)必须自己写super(参数列表)去调用父类构造器,而且必须放一行。

总结:子类构造器第一行必须写super(参数列表),若没有参数列表,则super可以省略。
应用场景如下

补充知识:任意类的构造器中,可以通过this(参数列表)去调用该类的其他构造器的


若子类构造器写了this(参数类别)必须,那么this(参数列表)放构造器的第一行
this()和super()只能存在一个,而且必须放第一行
分析以下代码:
package Pack2;
public class Test {
public static void main(String[] args) {
Student zhangsan = new Student("zhangsan");
System.out.println(zhangsan.getName());
System.out.println(zhangsan.getAge());
}
public void fun() {
System.out.println("fun");
}
}
class Student extends People{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Student() {
super();
System.out.println("无参");
this.age = 1;
}
public Student(String name) {
this(); //这里写了this()那么默认的super()就没有了
//也就是this()和super()只能存在一个
this.name = name;
}
}
class People {
People() {
System.out.println("父类构造器");
}
}
下图为执行流程

运行结果如下:

分析如下:
因为public String(String name)中存在this了 那么不会去调super()了,去到this()指向的构造器,若该构造器没有this去指向另一个构造器了,那么super()就执行了,也就是说super(参数列表)最多执行一次
继承好处

示例代码
1.

注释部分代表报错的代码
本文讲述了Java中子类构造器中super()的使用规则,强调了在存在this()调用时super()自动省略,且两者只能在构造器的第一行出现,确保了构造器的正确执行顺序和继承关系。
12万+





