class-constructor构造器中super函数的使用说明
目录
一、 super函数的使用示例
一、super函数的使用示例
class Person{
constructor(name,age){
this.name = name
this.age = age
}
sayHello(){
console.log(‘大家好’)
}
}
class American extends Person{
constructor(){
此时会报错,报错内容:missing super () call in constructor
忘记了使用super函数,在constructor构造函数中,必须优先调用super函数
修改为:
class American extends Person{
constructor(name,age){
//问题1:为什么一定要在constructor中调用super
//答案:因为如果一个子类,通过extends关键字继承了父类。那么在子类constructor构造函数中,必须优先调用super()
//问题2:super是什么东西?
//答案:super是一个函数,而且它是父类的构造器,子类中的super其实就是父类中,constructor构造器的一个引用
//问题3:为什么调用了super之后,a1实例的name和age都变成了undefined了?
//这是子类 美国人
//在class类中,可以使用extends关键字,实现子类继承父类
//语法:class子类extends父类{}
class American extends Person{
constructor(){
}
const a1 = new American(‘Jack’,20)
console.log(a1)
a1.sayHello()
super(name,age)
}
}
const a1 = new American(‘Jack’,20)
console.log(a1)
a1.sayHello()
//这是子类 中国人
class Chinese extends Person{
constructor(name,age){
super(name,age)
}
}
const c1 = new American(‘张三’,20)
console.log(c1)
c1.sayHello()
注意事项:
如果父类有空构造器,super()可以不写,但如果父类只有含参数的构造器,这个super(...)一定要写,并且要对应父构造器的参数,否则就会报错!