通过
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);
抽象类是专门用于定义那些不希望被外界直接创建的类的 抽象类一般用于定义基类 抽象类和接口一样用于约束子类
错误示例:
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();
本期结束咱们下次再见👋~
🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。