ES6中class继承为什么一定要写super()?super代表什么?

在ES6中,class 关键字用于定义一个类,而 extends 关键字则用于实现类之间的继承。当一个类继承自另一个类时,子类的构造函数中必须调用 super() 方法。这是因为 super() 实际上调用了父类的构造函数,以确保父类中的属性和方法能够被正确地初始化并继承到子类中。

super 关键字在类继承中有两个主要的用途:

  1. 调用父类的构造函数:在子类的构造函数中,super() 用于调用父类的构造函数。这是必需的,因为在子类构造函数中,this 关键字引用的是子类的一个实例。在调用 super() 之前,this 还不是一个完全初始化的对象,因此你不能在调用 super() 之前引用 this

例如:

class Parent {
  constructor(name) {
    this.name = name;
  }
}

class Child extends Parent {
  constructor(name, age) {
    super(name); // 调用父类的构造函数,并传递参数
    this.age = age; // 在调用 super() 之后,可以安全地使用 this
  }
}
  1. 访问父类的方法:在子类中,你可以使用 super 关键字来调用父类的方法。这允许你在重写父类方法的同时,仍然能够访问和调用父类的原始实现。

例如:

class Parent {
  sayHello() {
    console.log('Hello from Parent');
  }
}

class Child extends Parent {
  sayHello() {
    super.sayHello(); // 调用父类的 sayHello 方法
    console.log('Hello from Child');
  }
}

总的来说,super 关键字在ES6类继承中扮演着连接父类和子类的重要角色。它确保父类的属性和方法能够正确地初始化并继承到子类中,同时也允许子类在需要时访问和调用父类的方法。

posted @   王铁柱6  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示