关键字super

156 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第14天,点击查看活动详情 在继承里面,当子类继承父类时,如果其构造方法为有参构造器,我们提到用关键字super()来调用具体的某个有参的构造器。 所以现在我们来仔细聊一下super的用法。

super关键字

概念:

super代表父类的引用,用于访问父类的属性、方法、构造器。

基本语法:

  1. 访问父类属性时,注意不能访问父类中的私有化属性

       super.属性
    

2.访问父类的方法时,同样的注意不能访问其中私有化(private)的方法

      super.方法(参数列表)

3.访问父类构造器:(只能放在构造器的第一句,也只能出现一句)

      super(参数列表)

作用:

  • 调用父类的构造器;
  • 当子类中有和父类重名的属性和方法名时,此时想要访问父类中的属性或方法时,必须通过super;
  • super的访问不仅限于直接父类,,但是当当前子类和多个基类(超类、父类)都有重名的方法或属性时,super的访问遵从就近原则。 这里大家肯定有一个想法,就是我们前面说到的this,当时我们说到“谁调用它,它就表示哪个对象”,那么用父类调用它,按理来说它和super是一样的作用--访问父类中的属性或方法,现在我们来将this和super通过对比来理解一下它们。

this与super的区别(从以下三点进行阐述):

  1. 访问属性: this:访问本类中的属性,如果本类中没有当前属性,则去父类中访问; super:直接去访问父类中的当前属性;

2.调用方法: this:访问本类中的方法,如果本类中没有当前方法,则去父类中访问; super:直接去访问父类中的当前方法;

3.调用构造器: this:调用本类构造器,必须放在构造方法的首行(此前有提到); super:调用父类的构造器,必须放在子类的构造器首行。 另外,this表示当前对象,而super表示子类访问父类中的对象。