如何解决JavaScript继承超级
我正在浏览JS继承文档,并迎接了一个新的“功能”(对我来说),名为super,关键词为super
。好吧,据我所知,如果我有一个名为hospitalStaff
的父类,其名称和职员编号为实参,而继承的类称为nurse
,并且其上也有实参名称,但是还有其他论点。因此,在此示例中,我只使用super(name);
,不是吗?
感谢您的帮助!!祝您有美好的一天,并祝您编程愉快!
解决方法
是的,您需要将参数传递给super
函数。通过在super
构造函数中调用Nurse
,您可以在HospitalStaff
中调用构造函数,并将参数与它们一起传递。
在下面的示例中,Nurse
类还具有sayName
方法。所有方法(包括构造函数)都从父类继承。
但是,如果您的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();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。