1. super关键字
1.1. 梗概:
共有三个语法:
super.父类属性
- super相当于父类的实例对象
- 调用父类的属性, 不管有没有被子类隐藏
- 但被父类隐藏的, 就不能被调用
- super相当于父类的实例对象
super.父类方法
- super相当于父类的实例对象
- 调用父类的方法, 不管有没有被隐藏
- 但被父类隐藏的, 就不能被调用
- super相当于父类的实例对象
super(父类构造方法需要的实参)
- 适用范围:
- 只能用在子类的构造方法中的第一句
- 作用:
- 调用父类的构造方法
- 适用范围:
1.2. 说明:
- 不能通过
super.super.祖父类方法
来调用祖父类中的方法- 而应该是在父类中使用
super.祖父类方法
, 然后在子类中使用super.父类方法
- 而应该是在父类中使用
1.3. 语法详细
super(父类构造方法需要的实参)
- 看作直接调用父类的构造方法
- 即用super代表父类构造方法名
- 默认调用
super()
是默认存在于子类的构造方法中的, 即默认调用父类的无参数构造方法
- 参数传递过程详解
- 实参传给子类构造方法的形参
- 发生在实例化子类对象时
- 子类构造方法的形参传给
super(父类构造方法需要的实参)
- 从
super(父类构造方法需要的实参)
传给父类构造方法的形参
- 实参传给子类构造方法的形参
- 只构造父类不构造子类
- 调用父类的构造方法时, 父类构造方法中的this仍然指向父类
- 不同于js, js的this会指向子类
- 调用父类的构造方法时, 父类构造方法中的this仍然指向父类
- 看作直接调用父类的构造方法