更新时间:2021-12-16 来源:黑马程序员 浏览量:
super关键字用于访问和调用对象在父类上的方法,可以调用父类的构造方法,也可以调用父类的普通方法。示例代码如下。
class Father { constructor(x, y) { this.x = x; this.y = y; } sum() { console.log(this.x + this.y); } } class Son extends Father { constructor(x, y) { super(x, y); //调用父类的构造方法 } } var son = new Son(1, 2); son.sum(); //输出结果:3在上述代码中,第12行代码调用了父类的构造方法。当子类和父类都编写了构造方法的时候,子类需要用super调用父类的构造方法,否则代码在运行时会报错。
super关键字也可以调用父类的普通方法,示例代码如下。
class Father { say() { return '我是父类'; } class Son extends Father { say() { console.log(super.say() + '的子类'); } } var son = new Son(1, 2); son.say(); //输出结果:我是父类的子类
在上述代码中,当子类和父类具有同名方法(即say()方法)的时候,因为最后实例化的对象是子类对象,所以子类的say()方法会覆盖父类的say()方法。如果想要让父类的say()方法也执行,就要在子类的say()方法中通过super.say()调用父类的say0方法。
子类在继承了父类以后,也可添加一些属于自己的方法,示例代码如下。
class Father { constructor(x, y) { this.x = x; this.y = y; } sum() { console.log(this.x + this.y); } } class Son extends Father { constructor(x, y) { super(x, y); // super必须在子类的this之前调用 this.x = x; this.y = y; } subtract() { //子类特有的方法 console.log(this.x - this.y); } } var son = new Son(5, 3); son.sum(); //输出结果:8 son.subtract(); //输出结果:2
在上述代码中,第12行在子类的构造方法中使用了super,super必须放在this的前面,否则会报错。也就是说,子类必须先调用父类的构造方法,才能继续执行自己的构造方法。
【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19【AI大模型开发-Python】毕业33个工作日,就业率已达到94.55%,班均薪资20763元
2025-09-19【AI智能应用开发-Java】毕业5个工作日就业率98.18%,最高薪资 17.5k*13薪,全班平均薪资9244元
2025-09-19