前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TypeScript-类存取器 和 TypeScript-抽象类

TypeScript-类存取器 和 TypeScript-抽象类

原创
作者头像
杨不易呀
发布2023-09-28 19:19:13
1640
发布2023-09-28 19:19:13
举报
文章被收录于专栏:杨不易呀杨不易呀

存取器概述

通过 getters/setters 来截取对对象成员的访问

代码语言:typescript
复制
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-类方法修饰符 章节当中我已经编写过了,这里就不在编写了,就直接开始看抽象类即可

错误示例:

image-20211128225454524
image-20211128225454524
代码语言: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();

正确示例:

代码语言:typescript
复制
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();

抽象类和接口的区别

接口中只能定义约束, 不能定义具体实现 而抽象类中既可以定义约束, 又可以定义具体实现

image-20211128225324912
image-20211128225324912
代码语言:typescript
复制
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();
end02
end02
输入图片说明
输入图片说明

最后

本期结束咱们下次再见?~

? 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ ?

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

输入图片说明
输入图片说明

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 存取器概述
  • 抽象类概述
  • 抽象类和接口的区别
  • 最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com