更新時(shí)間:2021-12-16 來源:黑馬程序員 瀏覽量:
IT就到黑馬程序員.gif)
super關(guā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()方法中通過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ò)。也就是說,子類必須先調(diào)用父類的構(gòu)造方法,才能繼續(xù)執(zhí)行自己的構(gòu)造方法。
1024首播|39歲程序員逆襲記:不被年齡定義,AI浪潮里再迎春天
2025-10-241024程序員節(jié)丨10年同行,致敬用代碼改變世界的你
2025-10-24【AI設(shè)計(jì)】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計(jì)連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營】深圳跨境電商運(yùn)營畢業(yè)22個(gè)工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個(gè)工作日,班級(jí)93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19