Javascript 继承(超级)
Javascript Inheritance (super)
我正在浏览 JS 继承文档,我看到了一个新的“功能”(对我来说),称为 super,关键字 super
。好吧,据我所知,如果我有一个父 class,例如 hospitalStaff
,参数是姓名和员工编号,继承的 class 被称为 nurse
,并且上面还有参数名称,还有其他参数。所以,在这个例子中,我将只使用 super(name);
,不是吗?
感谢帮助!!祝你有美好的一天,编码愉快!
是的,您会将参数传递给 super
函数。通过在 Nurse
构造函数中调用 super
,您可以在 HospitalStaff
中调用构造函数并传递参数。
在下面的示例中,Nurse
class 也有 sayName
方法。所有方法(包括构造函数)都继承自父类 class.
但是,如果您的 Nurse
构造函数不同于 HospitalStaff
的构造函数,那么您需要创建一个新的构造函数,该构造函数也使用 super
调用父构造函数。如果不调用 super
,您只会覆盖子构造函数。试试看,它仍然有效。但是您不会拥有 name
和 staffNumber
属性。
同样适用于可以使用 super
从父级调用方法的方法。这样您就可以覆盖子项的方法,但仍保留父项对该方法的实现。
class HospitalStaff {
constructor(name, staffNumber) {
this.name = name;
this.staffNumber = staffNumber;
}
sayName() {
console.log(`Name: ${this.name}`);
console.log(`Number: ${this.staffNumber}`);
}
}
class Nurse extends HospitalStaff {
constructor(name, staffNumber, field) {
super(name, staffNumber); // Sets name and staffNumber properties
this.field = field; // Adds a field property
}
sayName() {
super.sayName();
console.log(`Field: ${this.field}`);
}
}
const bob = new HospitalStaff('bob', 43);
bob.sayName();
const julie = new Nurse('Julie', 120, 'pediatrics');
julie.sayName();
我正在浏览 JS 继承文档,我看到了一个新的“功能”(对我来说),称为 super,关键字 super
。好吧,据我所知,如果我有一个父 class,例如 hospitalStaff
,参数是姓名和员工编号,继承的 class 被称为 nurse
,并且上面还有参数名称,还有其他参数。所以,在这个例子中,我将只使用 super(name);
,不是吗?
感谢帮助!!祝你有美好的一天,编码愉快!
是的,您会将参数传递给 super
函数。通过在 Nurse
构造函数中调用 super
,您可以在 HospitalStaff
中调用构造函数并传递参数。
在下面的示例中,Nurse
class 也有 sayName
方法。所有方法(包括构造函数)都继承自父类 class.
但是,如果您的 Nurse
构造函数不同于 HospitalStaff
的构造函数,那么您需要创建一个新的构造函数,该构造函数也使用 super
调用父构造函数。如果不调用 super
,您只会覆盖子构造函数。试试看,它仍然有效。但是您不会拥有 name
和 staffNumber
属性。
同样适用于可以使用 super
从父级调用方法的方法。这样您就可以覆盖子项的方法,但仍保留父项对该方法的实现。
class HospitalStaff {
constructor(name, staffNumber) {
this.name = name;
this.staffNumber = staffNumber;
}
sayName() {
console.log(`Name: ${this.name}`);
console.log(`Number: ${this.staffNumber}`);
}
}
class Nurse extends HospitalStaff {
constructor(name, staffNumber, field) {
super(name, staffNumber); // Sets name and staffNumber properties
this.field = field; // Adds a field property
}
sayName() {
super.sayName();
console.log(`Field: ${this.field}`);
}
}
const bob = new HospitalStaff('bob', 43);
bob.sayName();
const julie = new Nurse('Julie', 120, 'pediatrics');
julie.sayName();