class-constructor 构造器中 super 函数的使用说明|学习笔记

简介: 快速学习 class-constructor 构造器中 super 函数的使用说明

开发者学堂课程【React 入门与实战class-constructor 构造器中 super 函数的使用说明】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/585/detail/8099


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()

//问题2super 是什么东西?

//答案: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(...)一定要写,并且要对应父构造器的参数,否则就会报错!

相关文章
定义类,super的使用,super的使用
要求: a.需要有一个类变量 b.需要有>=2个的对象变量 c.定义一个方法:打印类变量和对象变量 d.使用print打印对象->输出为This is a object e.实例化两个对象:且两个对象相加等于2 f.为对象添加一个临时变量temp_var
61 0
|
8月前
|
缓存 前端开发 JavaScript
方法 constructor()
方法 constructor() 是 JavaScript 中构造函数的一个特殊方法,它用于创建和初始化对象。当使用 new 操作符创建一个对象时,构造函数的 constructor 方法会被自动调用。在 constructor 方法中,可以设置对象的属性和方法,以及执行一些初始化操作。
63 7
|
Java Android开发
构造器里面的super()有什么用?到底写不写?
平时写的单独一个类如果没有直接继承父类就是直接继承的Object,有父类就是间接继承的Object,因为父类会继承Object,java的所有类都是Object的子类,哪怕不写super(),也会默认调用的父类的空构造器。
127 0
|
Java 开发者
Class 类对象的三种实例化模式|学习笔记
快速学习 Class 类对象的三种实例化模式
193 0
Class 类对象的三种实例化模式|学习笔记
|
Java 编译器
重写,重写规则 Super 关键字的使用,重写与重载之间的区别 , @override有什么用,以及加不加@override有什么区别
重写,重写规则 Super 关键字的使用,重写与重载之间的区别 , @override有什么用,以及加不加@override有什么区别
270 0
|
Java
Java常用关键字(final,abstract,instanceof,static)简介
1.final关键字 1.1final关键字基本介绍 (1)用来修饰类,在JDK中,被设计为final类的有String、System等。 当用final修改类时,该类成为最终类,无法被继承。简称为“断子绝孙类”。 (2)用来修饰一个方法 当使用final修饰方法时,这个方法将成为最终方法,无法被子类重写。但是,该方法仍然可以被继承。 (3)final修饰变量, ①如果是基本数据类型的变量,则其数值一旦在初始化之后便不能改变; ②如果是对象类型的变量,只能保证它的引用不变,但对象的内容是可以改变的
156 0
|
前端开发 程序员 开发者
class-使用 static 创建静态属性|学习笔记
快速学习 class-使用 static 创建静态属性
127 0
|
前端开发 JavaScript 开发者
class-使用 extends 实现子类继承父类|学习笔记
快速学习 class-使用 extends 实现子类继承父类
122 0
|
JavaScript
TypeScript类与继承和修饰符public 、private 、protected 的详细讲解 (上)
TypeScript类与继承和修饰符public 、private 、protected 的详细讲解
TypeScript类与继承和修饰符public 、private 、protected 的详细讲解 (上)
this和super用法的区别与细节(java继承中this和super的比较)
this和super用法的区别与细节(java继承中this和super的比较)