课程
/前端开发
/JavaScript
/TypeScript入门
为啥老师后来在写子类的构造函数的代码里参数都没有声明访问控制符了?
2019-01-03
源自:TypeScript入门 8-1
正在回答
构造函数里,带访问控制符的参数,是在声明一个类实例变量,父类中已经声明过了,子类继承父类,不需要再声明。
慕斯6055237 提问者
分几点来说明:
1.构造函数里,使用访问控制符,是声明在该类内的变量;
2.不声明是用来外部实例化时,接收参数,给予初始化的值;
3.而且讲师的视频是使用super(name),意思就是调用父类的构造函数,让父类接收并赋值给public的name;
4.然后子类继承父类,就有了name;
5.子类定义同名的方法不会被覆盖,同名的属性和方法会被覆盖(对外来说),如在子类内部定义同名eat(){super.eat()} 是可行的,在外部是的eat方法统一为子类覆盖的方法;
6.值得一提的是:打印出来的原型链,方法都在父类上,属性都在子类上,但是都属于原型链中的内容,自然都能找得到,对实际的开发并无影响。
在这个案例中,子类的构造函数里的参数有两个,一个是继承父类的,一个是子类自己的,所以分两种情况
继承父类的参数:继承来的,所以不需要带访问控制符;
子类自己的:声明一个参数有两种方式:①在构造函数中带访问控制符;②直接声明,如:code :string
本案例中,就属于后者:因为在类中已经声明了变量,所以造函数中的参数没必要再带访问控制符了
举报
TypeScript入门视频教程包括TypeScript的基本概念、常用语法和高级特性