1. super关键字

1.1. 梗概:

共有三个语法:

  1. super.父类属性
    1. super相当于父类的实例对象
      1. 调用父类的属性, 不管有没有被子类隐藏
      2. 但被父类隐藏的, 就不能被调用
  2. super.父类方法
    1. super相当于父类的实例对象
      1. 调用父类的方法, 不管有没有被隐藏
      2. 但被父类隐藏的, 就不能被调用
  3. super(父类构造方法需要的实参)
    1. 适用范围:
      1. 只能用在子类的构造方法中的第一句
    2. 作用:
      1. 调用父类的构造方法

1.2. 说明:

  1. 不能通过super.super.祖父类方法来调用祖父类中的方法
    1. 而应该是在父类中使用super.祖父类方法, 然后在子类中使用super.父类方法

1.3. 语法详细

  1. super(父类构造方法需要的实参)
    1. 看作直接调用父类的构造方法
      1. 即用super代表父类构造方法名
    2. 默认调用
      1. super()是默认存在于子类的构造方法中的, 即默认调用父类的无参数构造方法
    3. 参数传递过程详解
      1. 实参传给子类构造方法的形参
        1. 发生在实例化子类对象时
      2. 子类构造方法的形参传给super(父类构造方法需要的实参)
      3. super(父类构造方法需要的实参)传给父类构造方法的形参
    4. 只构造父类不构造子类
      1. 调用父类的构造方法时, 父类构造方法中的this仍然指向父类
        1. 不同于js, js的this会指向子类