13. TypeScript 类的只读属性和抽象类
这节主要讲一下类里的一个概念就是抽象类,抽象类和父类很像,都需要继承,但是抽象类里一般都有抽象方法。继承抽象类的类必须实现抽象方法才可以。在讲抽象类之前,我想把上节我遗忘的一个知识点给大家补上,那就是类里的只读属性readonly。
类里的只读属性 readonly
新建一个文件Demo13.ts,然后写下面一个类,并进行实例化和赋值操作,代码如下:
class Person {
constructor(public name:string ){ }
}
const person = new Person('mybj')
console.log(person.name)
写完后我们可以在终端(Terminal)中看一下结果,结果就应该是mybj。
比如我现在有一个需求,就是在实例化对象时赋予的名字,以后不能再更改了,也就是我们常说的只读属性。我们先来看现在这种情况是可以随意更改的,比如我写下面的代码。
class Person {
constructor(public name:string ){ }
}
const person = new Person('mybj')
person.name= '码云笔记'
console.log(person.name)
这时候就可以用一个关键词readonly,也就是只读的意思,来修改Person类代码。
class Person {
public readonly _name :string;
constructor(name:string ){
this._name = name;
}
}
const person = new Person('mybj')
person._name= '码云笔记'
console.log(person._name)
这样写完后,VSCode就回直接给我们报错,告诉我们_name属性是只读属性,不能修改。这是上节遗忘的一个知识点,我在这里给大家补上了。
抽象类的使用
什么是抽象类呢?我给大家举个例子,比如我们到洗浴中心,里边有服务员,有初级技师,高级技师,每一个岗位我都写成一个类,那代码就是这样的。(注释掉刚才写的代码)
class Waiter {}
class BaseTeacher {}
class seniorTeacher {}
作为老板,要求无论是什么职位,都要有独特的技能,比如服务员就是给顾客倒水,初级技师要求会泰式按摩,高级技师要求会 SPA 全身按摩。这是一个硬性要求,但是每个职位的技能有不同,这时候就可以用抽象类来解决问题。
抽象类的关键词是abstract,里边的抽象方法也是abstract开头的,现在我们就写一个Girl的抽象类。
abstract class Girl{
abstract skill() //因为没有具体的方法,所以我们这里不写括号
}
有了这个抽象类,三个类就可以继承这个类,然后会要求必须实现skill()方法,代码如下:
abstract class Girl{
abstract skill() //因为没有具体的方法,所以我们这里不写括号
}
class Waiter extends Girl{
skill(){
console.log('先生,请喝水!')
}
}
class BaseTeacher extends Girl{
skill(){
console.log('先生,来个泰式按摩吧!')
}
}
class seniorTeacher extends Girl{
skill(){
console.log('先生,来个 SPA 全身按摩吧!')
}
}
以上就是本节全部内容,我希望通过这个例子,让你能够对抽象类和抽象方法有一个比较深的认识。其实在工作中我们也会把这样的需求用接口来实现。
以上关于13. TypeScript 类的只读属性和抽象类的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 13. TypeScript 类的只读属性和抽象类

微信
支付宝