教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

super關(guān)鍵字調(diào)用父類:構(gòu)造方法和普通方法

更新時(shí)間:2021年12月16日16時(shí)15分 來(lái)源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)

super關(guān)鍵字用于訪問(wèn)和調(diào)用對(duì)象在父類上的方法,可以調(diào)用父類的構(gòu)造方法,也可以調(diào)用父類的普通方法。示例代碼如下。

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); //調(diào)用父類的構(gòu)造方法
    }
}
var son = new Son(1, 2);
son.sum(); //輸出結(jié)果:3
在上述代碼中,第12行代碼調(diào)用了父類的構(gòu)造方法。當(dāng)子類和父類都編寫了構(gòu)造方法的時(shí)候,子類需要用super調(diào)用父類的構(gòu)造方法,否則代碼在運(yùn)行時(shí)會(huì)報(bào)錯(cuò)。

super關(guān)鍵字也可以調(diào)用父類的普通方法,示例代碼如下。

class Father {
    say() {
        return '我是父類';
    }
    class Son extends Father {
        say() {
            console.log(super.say() + '的子類');
            }
        }
        var son = new Son(1, 2);
        son.say(); //輸出結(jié)果:我是父類的子類

在上述代碼中,當(dāng)子類和父類具有同名方法(即say()方法)的時(shí)候,因?yàn)樽詈髮?shí)例化的對(duì)象是子類對(duì)象,所以子類的say()方法會(huì)覆蓋父類的say()方法。如果想要讓父類的say()方法也執(zhí)行,就要在子類的say()方法中通過(guò)super.say()調(diào)用父類的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之前調(diào)用
        this.x = x;
        this.y = y;
    }
    subtract() { //子類特有的方法
        console.log(this.x - this.y);
    }
}
var son = new Son(5, 3);
son.sum(); //輸出結(jié)果:8
son.subtract(); //輸出結(jié)果:2

在上述代碼中,第12行在子類的構(gòu)造方法中使用了super,super必須放在this的前面,否則會(huì)報(bào)錯(cuò)。也就是說(shuō),子類必須先調(diào)用父類的構(gòu)造方法,才能繼續(xù)執(zhí)行自己的構(gòu)造方法。




猜你喜歡:

final關(guān)鍵字修飾變量為什么會(huì)報(bào)錯(cuò)?

使用static關(guān)鍵字如何定義成員變量?

搜索框文字自動(dòng)補(bǔ)全功能怎樣實(shí)現(xiàn)?

JSTL下載安裝與測(cè)試JSTL教程

傳智教育前端與移動(dòng)開發(fā)培訓(xùn)

0 分享到:
和我們?cè)诰€交談!