在ts中,默认的成员修饰符就是publicsegmentfault
总的老说,权限范围:public>protected>private 网站
注意:
1.若是当前类被申明为private或者protected,当前类不能new ( );当父类的构造方法被申明为protected,子类重写父类的构造方法以后,子类能够new;若是父类构造方法申明私有,子类不能new和继承。
2.当某个类不想被实例化,只是想子类继承后实例化,能够将该类的构造方法申明为protected,可是注意这时候须要子类经过super继承父类的构造方法才行
3.当一个类既不想自身实例化,也不想子类实例化,能够将构造方法申明为private
4.子类中若是想调用父类的构造方法,能够经过super关键字实现
5.通常构造方法修饰是public或者直接不写this
<center>
</center>
将一个属性或者方法经过static修饰,就变成了静态属性和方法,静态属性和静态方法只能经过类名方法,不能经过对象访问
如何判断用静态成员,何时用非静态成员?
当一个属性或者方法是属于对象的时候,用非静态成员表示,当一个属性或者方法是属于类的时候,使用静态成员spa
class Person{ static firstName:string='jack' static lastName:string='ma' private constructor(firstName:string,lastName:string){ Person.firstName=firstName Person.lastName=lastName } //静态方法只能访问静态成员,反之非静态方法既能够访问静态成员,也能够访问非静态成员 static getFullName(){ return `${this.firstName} ${this.lastName}` } }
若是静态方法或者静态属性被修饰protected或者private,在只能在类中被调用,在类外面不能经过类名访问,若是须要在类外面访问,能够经过暴露一个公有的方法进行访问 code
---
##### 只读属性(readonly)readonly name:string='jack'
##### 枚举
主要用在能够预知的类型上,如性别分红男女,一周分红七天,均可以定义成枚举类型对象
// 注意枚举表如今页面是字符串形式,可是其值是数字类型,比如下面 Week.SUN==0 enum Week{ SUN,MON,TUE,WED,THU,FRI,SAT } let day:Week=Week.MON