TypeScript学习第五篇 - 静态属性、静态方法、多态、抽象类

2020-11-26 14:44:49 浏览数 (1)

1. 静态属性与静态方法。

在TypeScript里通过 static 关键字来修饰静态属性与静态方法。静态属性与静态方法不需要实例化就可以访问,访问时直接通过类名来调用,静态方法不能访问当前类里的属性,只能访问当前类里的静态属性。

代码语言:javascript复制
class Person{
    public name:String;
    constructor(name:String){
        this.name = name;
    }
    run(){
        console.log(`${this.name}在运动`)
    }
    work(){
        console.log(`${this.name}在工作`)
    }
    // 静态属性
    static age:number = 30;
    // 静态方法
    static eat(){
        console.log(`他在喝水`);
        // 静态方法不能访问当前类里的属性
        // 只能访问类里的静态属性
        console.log(Person.age);
    }
};
Person.eat();
// 他在喝水
// 30

2. TypeScript中的多态

多态即为父类定义一个方法,子类继承它以后,可以改写这个方法以符合子类子自己的要求。

代码语言:javascript复制
class Animal{
    name:string;
    constructor(name:string){
        this.name = name;
    }
    // 父类吃的方法
    eat(){
        console.log('这是一个吃的方法')
    }
}
class Dog extends Animal{
    constructor(name:string){
        super(name);
    }
    // 子类吃的方法
    eat(){
        console.log(`${this.name}吃肉`);
    }
}
class Cat extends Animal{
    constructor(name:string){
        super(name);
    }
    // 子类吃的方法
    eat(){
        console.log(`${this.name}吃鱼`)
    }
}

3. 抽象类与抽象方法

在TypeScript里通过 abstract 关键字来定义抽象类和抽象方法,抽象方法只能放到抽象类里面,抽象类不能直接用来实例化,通常用来定义其它类的标准,在抽象的子类里面必须实现抽象类的抽象方法。

代码语言:javascript复制
// 抽象类,其它类的基类,不能直接实现
abstract class Animal{
    public name:string;
    constructor(name:string){
        this.name = name ;
    }
    abstract eat():any;
}
class Dog extends Animal{
    constructor(name:string){
        super(name);
    }
    // 抽象类的子类必须实现抽象类的抽象方法
    eat(){
        console.log(`${this.name}吃肉`)
    }
}
var dog = new Dog('小黑');
console.log(dog.eat());
// 小黑吃肉

0 人点赞