存取器概述
通过
getters/setters
来截取对对象成员的访问
class Person { private _age: number = 0; set age(val: number) { console.log('进入了set age方法'); if (val < 0) { throw new Error('人的年龄不能小于零'); } this._age = val; } get age(): number { console.log('进入了get age方法'); return this._age; } } let p = new Person(); p.age = 18; // 如下👇代码本质类同:p.age(-6); // p.age = -6; console.log(p.age);
抽象类概述
抽象类是专门用于定义那些不希望被外界直接创建的类的 抽象类一般用于定义基类 抽象类和接口一样用于约束子类
- 首先来看看没有抽象类的实现写法,在 TypeScript-类方法修饰符 章节当中我已经编写过了,这里就不在编写了,就直接开始看抽象类即可
错误示例:
abstract class Person { abstract name: string; abstract say(): void; } class Student extends Person { name: string = 'BNTang'; say(): void { console.log(`我的名字是${this.name}`); } } let p = new Person();
正确示例:
abstract class Person { abstract name: string; abstract say(): void; } class Student extends Person { name: string = 'BNTang'; say(): void { console.log(`我的名字是${this.name}`); } } let stu = new Student(); stu.say();
抽象类和接口的区别
接口中只能定义约束, 不能定义具体实现 而抽象类中既可以定义约束, 又可以定义具体实现
abstract class Person { abstract name: string; abstract say(): void; eat(): void { console.log(`${this.name}正在吃东西`); } } class Student extends Person { name: string = 'BNTang'; say(): void { console.log(`我的名字是${this.name}`); } } let stu = new Student(); stu.say(); stu.eat();
最后
本期结束咱们下次再见👋~
🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗