类的基本使用
从ES6开始引入了class关键字,方便了类的定义和使用
定义类中的属性需要在constructor之前定义属性的类别,然后在constructor中用this.属性 的格式赋值,或者直接在定义类别时就赋值
类的继承
我们可以使用extends关键字来实现类的继承,子类中使用super来访问父类
子类可以有自己的属性和方法,并且会继承父类中的属性和方法
在构造函数中,我们可以通过super来调用父类的构造方法,对父类的属性初始化(构造器中的super必须写在第一行)
变量声明时类型声明是父类的,可以接收类型是子类的实例
类的成员修饰符
public:修饰的是在任何地方可见、共有的属性和方法,默认编写的属性就是public(默认)
private:修饰的是仅在同一类中可见、私有的属性和方法(一般会封装方法来访问和设置)
protected:修饰的是仅在类自身及子类中可见、受保护的属性和方法
只读属性readonly
用readonly修饰的属性是只读属性,不能在任何地方被修改,只有在定义时能赋值(最好在构造器里)
如果只读属性声明的是一个应用类型,那么它里面的返回器还是会改变
getter和setter访问器
可以写set get关键字开头的函数,表示可以通过get set 来控制变量的改变和获得
类的静态成员
可以使用static来定义一个静态成员,可以是变量或者方法
通过static定义的成员,只能通过 类名.成员名 的形式来调用
抽象类
在定义很多通用的调用接口时,我们通常会让调用者传入父类,通过多态来试下更加灵活的调用方式
但是,父类本身可能并不需要对某些方法进行具体的实现,所以父类中定义的方法,我们可以定义为抽象方法
在typescript中没有具体实现的方法(没有方法体),就是抽象方法
- 抽象方法必须存在于抽象类中
- 抽象类是使用abstract声明的类
特点:
- 抽象类是不能被实例的(也就是不能通过new创建)
- 抽象方法必须被子类实现,否则该类必须是一个抽象类
类的类型
类本身也可以当做一种类型来使用,使用起来和普通类型类似