【Java基础】关键字super
1.super
- super关键字表示父类的,可以在子类中使用super关键字调用父类的属性、方法、构造器。通常情况下可以省略super。
- 当子类和父类中定义了同名的属性时,子类中使用
super.属性调用父类中的属性。 - 当子类重写了父类中的方法后,子类中使用
super.方法调用父类中的方法。
2.super调用构造器
- 在子类中使用
super(形参列表)调用父类中指定的构造器。 super(形参列表)必须声明在子类构造器中的首行。- 在类的构造器中,
this(形参列表)或super(形参列表)只能二选一,不能同时出现(因为这俩都要求在首行)。 - 在构造器中,没有使用
this(形参列表)或super(形参列表)则默认为super()调用父类中的空参构造器。
3.为什么要放在首行
- 构造器的作用是创建对象和对象初始化,放在第一行保证父类对象先创建初始化。
- 构造函数只能被构造函数调用,对象只会初始化一次。
- 同时使用
super()和this()则会创建两个相同对象(this()->该类构造器->父类构造器)
4.this和super的区别
| 区别点 | this | super |
|---|---|---|
| 访问属性 | 访问本类中的属性,如果本类没有此属性则从父类中继续查找 | 直接访问父类中的属性 |
| 调用方法 | 调用本类中的方法,如果本类中没有此方法则从父类中继续查找 | 直接访问父类中的方法 |
| 调用构造器 | 调用本类构造器,必须放在构造器首行 | 调用父类构造器,必须放在子类构造器首行 |

浙公网安备 33010602011771号