super()和this()在构造方法中都代表什么?
一、this()在构造方法里是什么
this(参数列表):调用本类中其他的构造方法
- 作用:一个构造器复用本类另一个构造器的代码,减少重复;
- 规则:
- 必须写在构造方法第一行;
- 不能和
super()同时出现; - 只能在构造方法中使用,普通方法里不能写
this()。
示例:
publicclassPerson{Stringname;intage;// 无参构造publicPerson(){this("张三",18);// 调用本类有参构造}// 有参构造publicPerson(Stringname,intage){this.name=name;this.age=age;}}二、super()在构造方法里是什么
super(参数列表):调用父类的构造方法
- 作用:子类初始化时,先完成父类对象的初始化;
- 规则:
- 必须写在构造方法第一行;
- 不手动写
super(),编译器会自动在第一行插入无参super(); - 如果父类只有有参构造,子类必须手动写
super(实参); - 和
this()互斥,不能同时存在。
示例:
classFather{Stringname;publicFather(Stringname){this.name=name;}}classSonextendsFather{// 必须手动调用父类有参构造publicSon(){super("老王");// 调用父类构造}}三、核心对比
| 写法 | 含义 | 调用对象 |
|---|---|---|
this() | 调用构造器 | 当前类(本类)其他构造方法 |
super() | 调用构造器 | 直接父类的构造方法 |
四、重点共同规则
- 两者都只能放在构造方法第一行;
- 同一个构造方法中,
this()和super()不能同时出现; - 都不能在普通成员方法、静态方法中使用。
