【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 |
---|---|---|
访问属性 | 访问本类中的属性,如果本类没有此属性则从父类中继续查找 | 直接访问父类中的属性 |
调用方法 | 调用本类中的方法,如果本类中没有此方法则从父类中继续查找 | 直接访问父类中的方法 |
调用构造器 | 调用本类构造器,必须放在构造器首行 | 调用父类构造器,必须放在子类构造器首行 |