← 返回首页
Vue3基础教程(十二)
发表时间:2021-08-05 01:24:53
类-高级部分

使用 TypeScript可以定义类实现OOP的编程思想,并且其语法和Java几乎一模一样。对于学过Java语言的后端程序员来说,这部分内容可以直接略过。

我们通过一个实例,快速掌握Typescript的类定义方式和语法特征。

//定义学生类
class Students {
    static school: string = '清华大学'; //静态属性
    public score: number;  //公有属性
    private money: number; //private: 只能类内部可以访问
    private _sid: string;
    private _sname: string;
    private _gender: string; //私有属性,但是定义了访问器,外部可以访问。

    //构造方法
    constructor(sid: string, sname: string, gender: string,money:number) {
        this._sid = sid;
        this._sname = sname;
        this._gender = gender;
        this.money = money;
    }

    //sid属性存取器
    set sid(value: string) {
        this._sid = value;
    }

    get sid(): string {
        return this._sid;
    }

    //sname属性存取器
    get sname(): string {
        return this._sname;
    }

    set sname(value: string) {
        this._sname = value;
    }

    //gender属性存取器
    get gender(): string {
        return this._gender;
    }

    set gender(value: string) {
        this._gender = value;
    }

    //成员方法
    study(): void {
        console.log(this.sname + " is good good study,day day up!");
    }

    //自我介绍
    introduce():void{
        console.log("my name is:"+this.sname+",I have money:"+this.money);
    }

}

let s = new Students('S0001', 'zhangsan', 'male',10000);

console.log(s);
console.log(s.sname);
s.score = 98;
s.sname = 'lisi'; //ok
//s.money = 5000;  error
console.log(s);
console.log(Students.school);
s.study();
s.introduce();

使用abstract定义抽象类。抽象类做为其它派生类的基类使用。 它们不能被实例化。不同于接口,抽象类可以包含成员的实现细节。 abstract 关键字是用于定义抽象类和在抽象类内部定义抽象方法。

实例:

export {}
abstract  class Animal{
    protected high:number;
    protected weight:number;
    abstract bark():void;
    constructor(high:number,weight:number) {
       this.high = high;
       this.weight = weight;
    }
}

class Dog extends Animal{

    private _alias; //昵称;
    constructor(hight:number,weight:number,alias:string) {
        super(hight,weight);
        this._alias = alias;
    }
    get alias() {
        return this._alias;
    }

    set alias(value) {
        this._alias = value;
    }
    bark(): void {
       console.log(this.alias+' is 汪汪...');
    }
}

let dog = new Dog(20,40,'旺财');
dog.bark();