教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

super关键字调用父类:构造方法和普通方法

更新时间:2021年12月16日16时15分 来源:传智教育 浏览次数:

好口碑IT培训

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的前面,否则会报错。也就是说,子类必须先调用父类的构造方法,才能继续执行自己的构造方法。




猜你喜欢:

final关键字修饰变量为什么会报错?

使用static关键字如何定义成员变量?

搜索框文字自动补全功能怎样实现?

JSTL下载安装与测试JSTL教程

传智教育前端与移动开发培训

0 分享到:
和我们在线交谈!