修饰符
四种修饰符:
1,public,修饰的属性或者方法是共有的,可以在任何地方被访问到,默认所有的属性或者方法都是public的
2,private,修饰的属性或者方法都是私有的,不能在声明它的类外面任何地方访问
3,protected,修饰的属性或者方法都是受保护的,除了声明它的类,还能在该类的子类内部访问,在类的外面和private一样不能访问
4,static,修饰静态方法和静态变量,可以通过类名直接调用,在静态方法中无法使用this访问成员变量或者方法
// 创建一个类
class Person {
private id:number
protected area:string
name:any //当一个类成员变量没有修饰的时候,默认是public修饰,外界是可以访问的
public age:any
say():string {
return `我的名字:${this.name},我的年龄:${this.age}`
}
static sex='男'
static find() {
// console.log(this.name) //报错
console.log('我走路')
}
}
// 实例化
var p = new Person()
p.age = 12
p.name = 'huzhen'
console.log(p.say())
Person.find()
console.log(`我性别:${Person.sex},没法改`)
// private 和 protected 属性只能在类的内部进行访问
// console.log(p.id) //报错,编译后执行打印undefined
// p.area = 'wuhan' ///报错
继承
TypeScript的继承用extends关键字,子类中可以使用super访问父类中的public或者protected类型的方法
注意:
1,super只能访问方法,不能访问属性,否则编译会报错;可以使用this来访问父类属性
2,父类中private的属性或者方法,子类均无法访问
// 创建child子类
class Child extends Person {
callParent() {
// 编译报错,super只能访问子类中的public和protected的方法,不能访问属性
// console.log('callParent:' + super.age)
console.log(super.say())
}
callArea() {
// this.id //报错,id通过private修饰,父类的私有属性
// 父类中通过protected修饰的属性和方法,可以通过this在子类里面进行访问
return this.area
}
}
var c = new Child()
c.callParent()
属性默认值
在声明类的时候,可以给属性设置默认值
class TDefault {
id=123456
name:string
}
var t = new TDefault()
console.log(t.id) //123456
console.log(t.name) //undefined
构造函数
构造函数是一种特殊的方法,用来在创建对象的时候初始化对象,总与new一起在创建对象的语句中调用。TypeScript中通过constructor来实现构造函数,构造函数中可以通过this来访问当前类的的属性和方法
class construct {
id:number
name:string
// 定义构造函数
constructor(id:number, name:string){
this.id = id
this.name = name
this.init()
}
init() {
console.log('我构造了')
}
woami() {
console.log(`我是${this.id},${this.name}`)
}
}
var cc = new construct(4, 'huzhen')
cc.woami()
console.log(cc.id, cc.name)
控制台输出:
我构造了
我是4,huzhen
4 ‘huzhen’